root/drivers/net/dsa/b53/b53_serdes.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. b53_serdes_map_lane
  2. b53_serdes_init

   1 /* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
   2 /*
   3  * Northstar Plus switch SerDes/SGMII PHY definitions
   4  *
   5  * Copyright (C) 2018 Florian Fainelli <f.fainelli@gmail.com>
   6  */
   7 
   8 #include <linux/phy.h>
   9 #include <linux/types.h>
  10 
  11 /* Non-standard page used to access SerDes PHY registers on NorthStar Plus */
  12 #define B53_SERDES_PAGE                 0x16
  13 #define B53_SERDES_BLKADDR              0x3e
  14 #define B53_SERDES_LANE                 0x3c
  15 
  16 #define B53_SERDES_ID0                  0x20
  17 #define  SERDES_ID0_MODEL_MASK          0x3f
  18 #define  SERDES_ID0_REV_NUM_SHIFT       11
  19 #define  SERDES_ID0_REV_NUM_MASK        0x7
  20 #define  SERDES_ID0_REV_LETTER_SHIFT    14
  21 
  22 #define B53_SERDES_MII_REG(x)           (0x20 + (x) * 2)
  23 #define B53_SERDES_DIGITAL_CONTROL(x)   (0x1e + (x) * 2)
  24 #define B53_SERDES_DIGITAL_STATUS       0x28
  25 
  26 /* SERDES_DIGITAL_CONTROL1 */
  27 #define  FIBER_MODE_1000X               BIT(0)
  28 #define  TBI_INTERFACE                  BIT(1)
  29 #define  SIGNAL_DETECT_EN               BIT(2)
  30 #define  INVERT_SIGNAL_DETECT           BIT(3)
  31 #define  AUTODET_EN                     BIT(4)
  32 #define  SGMII_MASTER_MODE              BIT(5)
  33 #define  DISABLE_DLL_PWRDOWN            BIT(6)
  34 #define  CRC_CHECKER_DIS                BIT(7)
  35 #define  COMMA_DET_EN                   BIT(8)
  36 #define  ZERO_COMMA_DET_EN              BIT(9)
  37 #define  REMOTE_LOOPBACK                BIT(10)
  38 #define  SEL_RX_PKTS_FOR_CNTR           BIT(11)
  39 #define  MASTER_MDIO_PHY_SEL            BIT(13)
  40 #define  DISABLE_SIGNAL_DETECT_FLT      BIT(14)
  41 
  42 /* SERDES_DIGITAL_CONTROL2 */
  43 #define  EN_PARALLEL_DET                BIT(0)
  44 #define  DIS_FALSE_LINK                 BIT(1)
  45 #define  FLT_FORCE_LINK                 BIT(2)
  46 #define  EN_AUTONEG_ERR_TIMER           BIT(3)
  47 #define  DIS_REMOTE_FAULT_SENSING       BIT(4)
  48 #define  FORCE_XMIT_DATA                BIT(5)
  49 #define  AUTONEG_FAST_TIMERS            BIT(6)
  50 #define  DIS_CARRIER_EXTEND             BIT(7)
  51 #define  DIS_TRRR_GENERATION            BIT(8)
  52 #define  BYPASS_PCS_RX                  BIT(9)
  53 #define  BYPASS_PCS_TX                  BIT(10)
  54 #define  TEST_CNTR_EN                   BIT(11)
  55 #define  TX_PACKET_SEQ_TEST             BIT(12)
  56 #define  TX_IDLE_JAM_SEQ_TEST           BIT(13)
  57 #define  CLR_BER_CNTR                   BIT(14)
  58 
  59 /* SERDES_DIGITAL_CONTROL3 */
  60 #define  TX_FIFO_RST                    BIT(0)
  61 #define  FIFO_ELAST_TX_RX_SHIFT         1
  62 #define  FIFO_ELAST_TX_RX_5K            0
  63 #define  FIFO_ELAST_TX_RX_10K           1
  64 #define  FIFO_ELAST_TX_RX_13_5K         2
  65 #define  FIFO_ELAST_TX_RX_18_5K         3
  66 #define  BLOCK_TXEN_MODE                BIT(9)
  67 #define  JAM_FALSE_CARRIER_MODE         BIT(10)
  68 #define  EXT_PHY_CRS_MODE               BIT(11)
  69 #define  INVERT_EXT_PHY_CRS             BIT(12)
  70 #define  DISABLE_TX_CRS                 BIT(13)
  71 
  72 /* SERDES_DIGITAL_STATUS */
  73 #define  SGMII_MODE                     BIT(0)
  74 #define  LINK_STATUS                    BIT(1)
  75 #define  DUPLEX_STATUS                  BIT(2)
  76 #define  SPEED_STATUS_SHIFT             3
  77 #define  SPEED_STATUS_10                0
  78 #define  SPEED_STATUS_100               1
  79 #define  SPEED_STATUS_1000              2
  80 #define  SPEED_STATUS_2500              3
  81 #define  SPEED_STATUS_MASK              SPEED_STATUS_2500
  82 #define  PAUSE_RESOLUTION_TX_SIDE       BIT(5)
  83 #define  PAUSE_RESOLUTION_RX_SIDE       BIT(6)
  84 #define  LINK_STATUS_CHANGE             BIT(7)
  85 #define  EARLY_END_EXT_DET              BIT(8)
  86 #define  CARRIER_EXT_ERR_DET            BIT(9)
  87 #define  RX_ERR_DET                     BIT(10)
  88 #define  TX_ERR_DET                     BIT(11)
  89 #define  CRC_ERR_DET                    BIT(12)
  90 #define  FALSE_CARRIER_ERR_DET          BIT(13)
  91 #define  RXFIFO_ERR_DET                 BIT(14)
  92 #define  TXFIFO_ERR_DET                 BIT(15)
  93 
  94 /* Block offsets */
  95 #define SERDES_DIGITAL_BLK              0x8300
  96 #define SERDES_ID0                      0x8310
  97 #define SERDES_MII_BLK                  0xffe0
  98 #define SERDES_XGXSBLK0_BLOCKADDRESS    0xffd0
  99 
 100 struct phylink_link_state;
 101 
 102 static inline u8 b53_serdes_map_lane(struct b53_device *dev, int port)
 103 {
 104         if (!dev->ops->serdes_map_lane)
 105                 return B53_INVALID_LANE;
 106 
 107         return dev->ops->serdes_map_lane(dev, port);
 108 }
 109 
 110 int b53_serdes_get_link(struct b53_device *dev, int port);
 111 int b53_serdes_link_state(struct b53_device *dev, int port,
 112                           struct phylink_link_state *state);
 113 void b53_serdes_config(struct b53_device *dev, int port, unsigned int mode,
 114                        const struct phylink_link_state *state);
 115 void b53_serdes_an_restart(struct b53_device *dev, int port);
 116 void b53_serdes_link_set(struct b53_device *dev, int port, unsigned int mode,
 117                          phy_interface_t interface, bool link_up);
 118 void b53_serdes_phylink_validate(struct b53_device *dev, int port,
 119                                 unsigned long *supported,
 120                                 struct phylink_link_state *state);
 121 #if IS_ENABLED(CONFIG_B53_SERDES)
 122 int b53_serdes_init(struct b53_device *dev, int port);
 123 #else
 124 static inline int b53_serdes_init(struct b53_device *dev, int port)
 125 {
 126         return -ENODEV;
 127 }
 128 #endif

/* [<][>][^][v][top][bottom][index][help] */