net: phy: Add BaseT1 auto-negotiation registers
authorAlexandru Tachici <alexandru.tachici@analog.com>
Fri, 29 Apr 2022 15:34:33 +0000 (18:34 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sun, 1 May 2022 16:45:35 +0000 (17:45 +0100)
Added BASE-T1 AN advertisement register (Registers 7.514, 7.515, and
7.516) and BASE-T1 AN LP Base Page ability register (Registers 7.517,
7.518, and 7.519).

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Alexandru Tachici <alexandru.tachici@analog.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/mdio.h

index 0b2eba36dd7ca5054563c27bf4fffea7a97cd6fb..fa3515257f5423809b6d9c4251aa92fbb82556d4 100644 (file)
 #define MDIO_B10L_PMA_CTRL     2294    /* 10BASE-T1L PMA control */
 #define MDIO_PMA_10T1L_STAT    2295    /* 10BASE-T1L PMA status */
 #define MDIO_PCS_10T1L_CTRL    2278    /* 10BASE-T1L PCS control */
+#define MDIO_AN_T1_CTRL                512     /* BASE-T1 AN control */
+#define MDIO_AN_T1_STAT                513     /* BASE-T1 AN status */
+#define MDIO_AN_T1_ADV_L       514     /* BASE-T1 AN advertisement register [15:0] */
+#define MDIO_AN_T1_ADV_M       515     /* BASE-T1 AN advertisement register [31:16] */
+#define MDIO_AN_T1_ADV_H       516     /* BASE-T1 AN advertisement register [47:32] */
+#define MDIO_AN_T1_LP_L                517     /* BASE-T1 AN LP Base Page ability register [15:0] */
+#define MDIO_AN_T1_LP_M                518     /* BASE-T1 AN LP Base Page ability register [31:16] */
+#define MDIO_AN_T1_LP_H                519     /* BASE-T1 AN LP Base Page ability register [47:32] */
 
 /* LASI (Link Alarm Status Interrupt) registers, defined by XENPAK MSA. */
 #define MDIO_PMA_LASI_RXCTRL   0x9000  /* RX_ALARM control */
 #define MDIO_PCS_10T1L_CTRL_LB         0x4000  /* Enable PCS level loopback mode */
 #define MDIO_PCS_10T1L_CTRL_RESET      0x8000  /* PCS reset */
 
+/* BASE-T1 auto-negotiation advertisement register [15:0] */
+#define MDIO_AN_T1_ADV_L_PAUSE_CAP     ADVERTISE_PAUSE_CAP
+#define MDIO_AN_T1_ADV_L_PAUSE_ASYM    ADVERTISE_PAUSE_ASYM
+#define MDIO_AN_T1_ADV_L_FORCE_MS      0x1000  /* Force Master/slave Configuration */
+#define MDIO_AN_T1_ADV_L_REMOTE_FAULT  ADVERTISE_RFAULT
+#define MDIO_AN_T1_ADV_L_ACK           ADVERTISE_LPACK
+#define MDIO_AN_T1_ADV_L_NEXT_PAGE_REQ ADVERTISE_NPAGE
+
+/* BASE-T1 auto-negotiation advertisement register [31:16] */
+#define MDIO_AN_T1_ADV_M_B10L          0x4000  /* device is compatible with 10BASE-T1L */
+#define MDIO_AN_T1_ADV_M_MST           0x0010  /* advertise master preference */
+
+/* BASE-T1 auto-negotiation advertisement register [47:32] */
+#define MDIO_AN_T1_ADV_H_10L_TX_HI_REQ 0x1000  /* 10BASE-T1L High Level Transmit Request */
+#define MDIO_AN_T1_ADV_H_10L_TX_HI     0x2000  /* 10BASE-T1L High Level Transmit Ability */
+
+/* BASE-T1 AN LP Base Page ability register [15:0] */
+#define MDIO_AN_T1_LP_L_PAUSE_CAP      LPA_PAUSE_CAP
+#define MDIO_AN_T1_LP_L_PAUSE_ASYM     LPA_PAUSE_ASYM
+#define MDIO_AN_T1_LP_L_FORCE_MS       0x1000  /* LP Force Master/slave Configuration */
+#define MDIO_AN_T1_LP_L_REMOTE_FAULT   LPA_RFAULT
+#define MDIO_AN_T1_LP_L_ACK            LPA_LPACK
+#define MDIO_AN_T1_LP_L_NEXT_PAGE_REQ  LPA_NPAGE
+
+/* BASE-T1 AN LP Base Page ability register [31:16] */
+#define MDIO_AN_T1_LP_M_MST            0x0010  /* LP master preference */
+#define MDIO_AN_T1_LP_M_B10L           0x4000  /* LP is compatible with 10BASE-T1L */
+
+/* BASE-T1 AN LP Base Page ability register [47:32] */
+#define MDIO_AN_T1_LP_H_10L_TX_HI_REQ  0x1000  /* 10BASE-T1L High Level LP Transmit Request */
+#define MDIO_AN_T1_LP_H_10L_TX_HI      0x2000  /* 10BASE-T1L High Level LP Transmit Ability */
+
 /* EEE Supported/Advertisement/LP Advertisement registers.
  *
  * EEE capability Register (3.20), Advertisement (7.60) and