File Index
Files and directories
Sign in
FILE

mxl-gsw1xx.h

File preview with syntax highlighting.

linux-6.19.14/drivers/net/dsa/lantiq/mxl-gsw1xx.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/* Register definitions for MaxLinear GSW1xx series switches
  3 *
  4 * Copyright (C) 2025 Daniel Golle <daniel@makrotopia.org>
  5 * Copyright (C) 2023 - 2024 MaxLinear Inc.
  6 */
  7#ifndef __MXL_GSW1XX_H
  8#define __MXL_GSW1XX_H
  9
 10#include <linux/bitfield.h>
 11
 12#define GSW1XX_PORTS				6
 13/* Port used for RGMII or optional RMII */
 14#define GSW1XX_MII_PORT				5
 15/* Port used for SGMII */
 16#define GSW1XX_SGMII_PORT			4
 17
 18#define GSW1XX_SYS_CLK_FREQ			340000000
 19
 20/* SMDIO switch register base address */
 21#define GSW1XX_SMDIO_BADR			0x1f
 22#define  GSW1XX_SMDIO_BADR_UNKNOWN		-1
 23
 24/* GSW1XX SGMII PCS */
 25#define GSW1XX_SGMII_BASE			0xd000
 26#define GSW1XX_SGMII_PHY_HWBU_CTRL		0x009
 27#define  GSW1XX_SGMII_PHY_HWBU_CTRL_EN_HWBU_FSM	BIT(0)
 28#define  GSW1XX_SGMII_PHY_HWBU_CTRL_HW_FSM_EN	BIT(3)
 29#define GSW1XX_SGMII_TBI_TXANEGH		0x300
 30#define GSW1XX_SGMII_TBI_TXANEGL		0x301
 31#define GSW1XX_SGMII_TBI_ANEGCTL		0x304
 32#define  GSW1XX_SGMII_TBI_ANEGCTL_LT		GENMASK(1, 0)
 33#define   GSW1XX_SGMII_TBI_ANEGCTL_LT_10US	0
 34#define   GSW1XX_SGMII_TBI_ANEGCTL_LT_1_6MS	1
 35#define   GSW1XX_SGMII_TBI_ANEGCTL_LT_5MS	2
 36#define   GSW1XX_SGMII_TBI_ANEGCTL_LT_10MS	3
 37#define  GSW1XX_SGMII_TBI_ANEGCTL_ANEGEN	BIT(2)
 38#define  GSW1XX_SGMII_TBI_ANEGCTL_RANEG		BIT(3)
 39#define  GSW1XX_SGMII_TBI_ANEGCTL_OVRABL	BIT(4)
 40#define  GSW1XX_SGMII_TBI_ANEGCTL_OVRANEG	BIT(5)
 41#define  GSW1XX_SGMII_TBI_ANEGCTL_ANMODE	GENMASK(7, 6)
 42#define   GSW1XX_SGMII_TBI_ANEGCTL_ANMODE_1000BASEX	1
 43#define   GSW1XX_SGMII_TBI_ANEGCTL_ANMODE_SGMII_PHY	2
 44#define   GSW1XX_SGMII_TBI_ANEGCTL_ANMODE_SGMII_MAC	3
 45#define  GSW1XX_SGMII_TBI_ANEGCTL_BCOMP		BIT(15)
 46
 47#define GSW1XX_SGMII_TBI_TBICTL			0x305
 48#define  GSW1XX_SGMII_TBI_TBICTL_INITTBI	BIT(0)
 49#define  GSW1XX_SGMII_TBI_TBICTL_ENTBI		BIT(1)
 50#define  GSW1XX_SGMII_TBI_TBICTL_CRSTRR		BIT(4)
 51#define  GSW1XX_SGMII_TBI_TBICTL_CRSOFF		BIT(5)
 52#define GSW1XX_SGMII_TBI_TBISTAT		0x309
 53#define  GSW1XX_SGMII_TBI_TBISTAT_LINK		BIT(0)
 54#define  GSW1XX_SGMII_TBI_TBISTAT_AN_COMPLETE	BIT(1)
 55#define GSW1XX_SGMII_TBI_LPSTAT			0x30a
 56#define  GSW1XX_SGMII_TBI_LPSTAT_DUPLEX		BIT(0)
 57#define  GSW1XX_SGMII_TBI_LPSTAT_PAUSE_RX	BIT(1)
 58#define  GSW1XX_SGMII_TBI_LPSTAT_PAUSE_TX	BIT(2)
 59#define  GSW1XX_SGMII_TBI_LPSTAT_SPEED		GENMASK(6, 5)
 60#define   GSW1XX_SGMII_TBI_LPSTAT_SPEED_10	0
 61#define   GSW1XX_SGMII_TBI_LPSTAT_SPEED_100	1
 62#define   GSW1XX_SGMII_TBI_LPSTAT_SPEED_1000	2
 63#define   GSW1XX_SGMII_TBI_LPSTAT_SPEED_NOSGMII	3
 64#define GSW1XX_SGMII_PHY_D			0x100
 65#define GSW1XX_SGMII_PHY_A			0x101
 66#define GSW1XX_SGMII_PHY_C			0x102
 67#define  GSW1XX_SGMII_PHY_STATUS		BIT(0)
 68#define  GSW1XX_SGMII_PHY_READ			BIT(4)
 69#define  GSW1XX_SGMII_PHY_WRITE			BIT(8)
 70#define  GSW1XX_SGMII_PHY_RESET_N		BIT(12)
 71#define GSW1XX_SGMII_PCS_RXB_CTL		0x401
 72#define  GSW1XX_SGMII_PCS_RXB_CTL_INIT_RX_RXB	BIT(1)
 73#define GSW1XX_SGMII_PCS_TXB_CTL		0x404
 74#define  GSW1XX_SGMII_PCS_TXB_CTL_INIT_TX_TXB	BIT(1)
 75
 76#define GSW1XX_SGMII_PHY_RX0_CFG2		0x004
 77#define  GSW1XX_SGMII_PHY_RX0_CFG2_EQ		GENMASK(2, 0)
 78#define   GSW1XX_SGMII_PHY_RX0_CFG2_EQ_DEF	2
 79#define  GSW1XX_SGMII_PHY_RX0_CFG2_INVERT	BIT(3)
 80#define  GSW1XX_SGMII_PHY_RX0_CFG2_LOS_EN	BIT(4)
 81#define  GSW1XX_SGMII_PHY_RX0_CFG2_TERM_EN	BIT(5)
 82#define  GSW1XX_SGMII_PHY_RX0_CFG2_FILT_CNT	GENMASK(12, 6)
 83#define   GSW1XX_SGMII_PHY_RX0_CFG2_FILT_CNT_DEF	20
 84
 85#define GSW1XX_SGMII_PHY_TX0_CFG3		0x007
 86#define  GSW1XX_SGMII_PHY_TX0_CFG3_VBOOST_EN	BIT(12)
 87#define  GSW1XX_SGMII_PHY_TX0_CFG3_VBOOST_LEVEL	GENMASK(11, 9)
 88#define   GSW1XX_SGMII_PHY_TX0_CFG3_VBOOST_LEVEL_DEF	4
 89#define  GSW1XX_SGMII_PHY_TX0_CFG3_INVERT	BIT(8)
 90
 91/* GSW1XX PDI Registers */
 92#define GSW1XX_SWITCH_BASE			0xe000
 93
 94/* GSW1XX MII Registers */
 95#define GSW1XX_RGMII_BASE			0xf100
 96
 97/* GSW1XX GPIO Registers */
 98#define GSW1XX_GPIO_BASE			0xf300
 99#define GPIO_ALTSEL0				0x83
100#define GPIO_ALTSEL0_EXTPHY_MUX_VAL		0x03c3
101#define GPIO_ALTSEL1				0x84
102#define GPIO_ALTSEL1_EXTPHY_MUX_VAL		0x003f
103
104/* MDIO bus controller */
105#define GSW1XX_MMDIO_BASE			0xf400
106
107/* generic IC registers */
108#define GSW1XX_SHELL_BASE			0xfa00
109#define  GSW1XX_SHELL_RST_REQ			0x01
110#define   GSW1XX_RST_REQ_SGMII_SHELL		BIT(5)
111/* RGMII PAD Slew Control Register */
112#define  GSW1XX_SHELL_RGMII_SLEW_CFG		0x78
113#define   RGMII_SLEW_CFG_RX_2_5_V		BIT(4)
114#define   RGMII_SLEW_CFG_TX_2_5_V		BIT(5)
115
116/* SGMII clock related settings */
117#define GSW1XX_CLK_BASE				0xf900
118#define  GSW1XX_CLK_NCO_CTRL			0x68
119#define   GSW1XX_SGMII_HSP_MASK			GENMASK(3, 2)
120#define   GSW1XX_SGMII_SEL			BIT(1)
121#define   GSW1XX_SGMII_1G			0x0
122#define   GSW1XX_SGMII_2G5			0xc
123#define   GSW1XX_SGMII_1G_NCO1			0x0
124#define   GSW1XX_SGMII_2G5_NCO2			0x2
125
126#endif /* __MXL_GSW1XX_H */
~/ Read-only file preview.