diff options
Diffstat (limited to 'drivers/net/dsa/qca8k.h')
| -rw-r--r-- | drivers/net/dsa/qca8k.h | 35 | 
1 files changed, 31 insertions, 4 deletions
| diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h index ed3b05ad6745..e10571a398c9 100644 --- a/drivers/net/dsa/qca8k.h +++ b/drivers/net/dsa/qca8k.h @@ -13,6 +13,7 @@  #include <linux/gpio.h>  #define QCA8K_NUM_PORTS					7 +#define QCA8K_NUM_CPU_PORTS				2  #define QCA8K_MAX_MTU					9000  #define PHY_ID_QCA8327					0x004dd034 @@ -24,8 +25,6 @@  #define QCA8K_NUM_FDB_RECORDS				2048 -#define QCA8K_CPU_PORT					0 -  #define QCA8K_PORT_VID_DEF				1  /* Global control registers */ @@ -35,16 +34,26 @@  #define   QCA8K_MASK_CTRL_DEVICE_ID_MASK		GENMASK(15, 8)  #define   QCA8K_MASK_CTRL_DEVICE_ID(x)			((x) >> 8)  #define QCA8K_REG_PORT0_PAD_CTRL			0x004 +#define   QCA8K_PORT0_PAD_SGMII_RXCLK_FALLING_EDGE	BIT(19) +#define   QCA8K_PORT0_PAD_SGMII_TXCLK_FALLING_EDGE	BIT(18)  #define QCA8K_REG_PORT5_PAD_CTRL			0x008  #define QCA8K_REG_PORT6_PAD_CTRL			0x00c  #define   QCA8K_PORT_PAD_RGMII_EN			BIT(26) +#define   QCA8K_PORT_PAD_RGMII_TX_DELAY_MASK		GENMASK(23, 22)  #define   QCA8K_PORT_PAD_RGMII_TX_DELAY(x)		((x) << 22) +#define   QCA8K_PORT_PAD_RGMII_RX_DELAY_MASK		GENMASK(21, 20)  #define   QCA8K_PORT_PAD_RGMII_RX_DELAY(x)		((x) << 20)  #define	  QCA8K_PORT_PAD_RGMII_TX_DELAY_EN		BIT(25)  #define   QCA8K_PORT_PAD_RGMII_RX_DELAY_EN		BIT(24)  #define   QCA8K_MAX_DELAY				3  #define   QCA8K_PORT_PAD_SGMII_EN			BIT(7)  #define QCA8K_REG_PWS					0x010 +#define   QCA8K_PWS_POWER_ON_SEL			BIT(31) +/* This reg is only valid for QCA832x and toggle the package + * type from 176 pin (by default) to 148 pin used on QCA8327 + */ +#define   QCA8327_PWS_PACKAGE148_EN			BIT(30) +#define   QCA8K_PWS_LED_OPEN_EN_CSR			BIT(24)  #define   QCA8K_PWS_SERDES_AEN_DIS			BIT(7)  #define QCA8K_REG_MODULE_EN				0x030  #define   QCA8K_MODULE_EN_MIB				BIT(0) @@ -100,6 +109,11 @@  #define   QCA8K_SGMII_MODE_CTRL_PHY			(1 << 22)  #define   QCA8K_SGMII_MODE_CTRL_MAC			(2 << 22) +/* MAC_PWR_SEL registers */ +#define QCA8K_REG_MAC_PWR_SEL				0x0e4 +#define   QCA8K_MAC_PWR_RGMII1_1_8V			BIT(18) +#define   QCA8K_MAC_PWR_RGMII0_1_8V			BIT(19) +  /* EEE control registers */  #define QCA8K_REG_EEE_CTRL				0x100  #define  QCA8K_REG_EEE_CTRL_LPI_EN(_i)			((_i + 1) * 2) @@ -248,14 +262,27 @@ struct ar8xxx_port_status {  struct qca8k_match_data {  	u8 id; +	bool reduced_package; +}; + +enum { +	QCA8K_CPU_PORT0, +	QCA8K_CPU_PORT6, +}; + +struct qca8k_ports_config { +	bool sgmii_rx_clk_falling_edge; +	bool sgmii_tx_clk_falling_edge; +	bool sgmii_enable_pll; +	u8 rgmii_rx_delay[QCA8K_NUM_CPU_PORTS]; /* 0: CPU port0, 1: CPU port6 */ +	u8 rgmii_tx_delay[QCA8K_NUM_CPU_PORTS]; /* 0: CPU port0, 1: CPU port6 */  };  struct qca8k_priv {  	u8 switch_id;  	u8 switch_revision; -	u8 rgmii_tx_delay; -	u8 rgmii_rx_delay;  	bool legacy_phy_port_mapping; +	struct qca8k_ports_config ports_config;  	struct regmap *regmap;  	struct mii_bus *bus;  	struct ar8xxx_port_status port_sts[QCA8K_NUM_PORTS]; | 
