8#define ADIN1300_MII_CONTROL 0x0000
9#define ADIN1300_LOOPBACK_MASK NO_OS_BIT(14)
10#define ADIN1300_SPEED_SEL_LSB_MASK NO_OS_BIT(13)
11#define ADIN1300_AUTONEG_EN_MASK NO_OS_BIT(12)
12#define ADIN1300_RESTART_ANEG_MASK NO_OS_BIT(9)
13#define ADIN1300_DPLX_MODE_MASK NO_OS_BIT(8)
14#define ADIN1300_SPEED_SEL_MSB_MASK NO_OS_BIT(6)
16#define ADIN1300_MII_STATUS 0x1
17#define ADIN1300_AUTONEG_DONE_MASK NO_OS_BIT(5)
18#define ADIN1300_REM_FLT_LAT_MASK NO_OS_BIT(4)
19#define ADIN1300_LINK_STAT_LAT_MASK NO_OS_BIT(2)
20#define ADIN1300_JABBER_DET_LAT_MASK NO_OS_BIT(1)
22#define ADIN1300_PHY_ID_1 0x2
23#define ADIN1300_PHY_ID_2 0x3
25#define ADIN1300_AUTONEG_ADV 0x04
26#define ADIN1300_FD_100_ADV_MASK NO_OS_BIT(8)
27#define ADIN1300_HD_100_ADV_MASK NO_OS_BIT(7)
28#define ADIN1300_FD_10_ADV_MASK NO_OS_BIT(6)
29#define ADIN1300_HD_10_ADV_MASK NO_OS_BIT(5)
30#define ADIN1300_SELECTOR_ADV_MASK NO_OS_GENMASK(4, 0)
32#define ADIN1300_MSTR_SLV_CONTROL 0x09
33#define ADIN1300_FD_1000_ADV_MASK NO_OS_BIT(9)
34#define ADIN1300_HD_1000_ADV_MASK NO_OS_BIT(8)
36#define ADIN1300_PHY_CTRL_1 0x0012
37#define ADIN1300_DIAG_CLK_EN_MASK NO_OS_BIT(2)
39#define ADIN1300_PHY_CTRL_STATUS_1 0x0013
40#define ADIN1300_LB_ALL_DIG_SEL_MASK NO_OS_BIT(12)
42#define ADIN1300_RX_ERR_CNT 0x0014
44#define ADIN1300_PHY_CTRL_2 0x0016
45#define ADIN1300_DN_SPEED_TO_100_EN_MASK NO_OS_BIT(11)
46#define ADIN1300_DN_SPEED_TO_10_EN_MASK NO_OS_BIT(10)
47#define ADIN1300_CLK_CNTRL_MASK NO_OS_GENMASK(3, 1)
49#define ADIN1300_PHY_CTRL_3 0x0017
50#define ADIN1300_LINK_EN_MASK NO_OS_BIT(13)
52#define ADIN1300_IRQ_MASK 0x0018
53#define ADIN1300_IRQ_STATUS 0x0019
54#define ADIN1300_LNK_STAT_CHNG_IRQ_MASK NO_OS_BIT(2)
55#define ADIN1300_SPEED_CHG_IRQ_MASK NO_OS_BIT(1)
56#define ADIN1300_HW_IRQ_EN_MASK NO_OS_BIT(0)
58#define ADIN1300_PHY_STATUS_1 0x001a
59#define ADIN1300_HCD_TECH_MASK NO_OS_GENMASK(9, 7)
60#define ADIN1300_LINK_STAT_MASK NO_OS_BIT(6)
62#define ADIN1300_PHY_STATUS_2 0x001f
64#define ADIN1300_FC_EN NO_OS_MDIO_C45_ADDR(0x1e, 0x9403)
65#define ADIN1300_FC_EN_MASK NO_OS_BIT(0)
67#define ADIN1300_FC_TX_SEL NO_OS_MDIO_C45_ADDR(0x1e, 0x9407)
68#define ADIN1300_FC_TX_SEL_MASK NO_OS_BIT(0)
70#define ADIN1300_FC_FRM_CNT_H NO_OS_MDIO_C45_ADDR(0x1e, 0x940a)
71#define ADIN1300_FC_FRM_CNT_L NO_OS_MDIO_C45_ADDR(0x1e, 0x940b)
72#define ADIN1300_FC_LEN_ERR_CNT NO_OS_MDIO_C45_ADDR(0x1e, 0x940c)
73#define ADIN1300_FC_ALGN_ERR_CNT NO_OS_MDIO_C45_ADDR(0x1e, 0x940d)
74#define ADIN1300_FC_SYMB_ERR_CNT NO_OS_MDIO_C45_ADDR(0x1e, 0x940e)
75#define ADIN1300_FC_OSZ_ERR_CNT NO_OS_MDIO_C45_ADDR(0x1e, 0x940f)
76#define ADIN1300_FC_USZ_ERR_CNT NO_OS_MDIO_C45_ADDR(0x1e, 0x9410)
78#define ADIN1300_FG_EN NO_OS_MDIO_C45_ADDR(0x1e, 0x9415)
79#define ADIN1300_FG_EN_MASK NO_OS_BIT(0)
81#define ADIN1300_FG_CNTRL_RSTRT NO_OS_MDIO_C45_ADDR(0x1e, 0x9416)
82#define ADIN1300_FG_RSTRT_MASK NO_OS_BIT(3)
83#define ADIN1300_FG_CNTRL_MASK NO_OS_GENMASK(2, 0)
85#define ADIN1300_FG_FRM_LEN NO_OS_MDIO_C45_ADDR(0x1e, 0x941a)
87#define ADIN1300_FG_DONE NO_OS_MDIO_C45_ADDR(0x1e, 0x941e)
88#define ADIN1300_FG_DONE_MASK NO_OS_BIT(0)
90#define ADIN1300_GE_SFT_RST NO_OS_MDIO_C45_ADDR(0x1e, 0xff0c)
91#define ADIN1300_GE_SFT_RST_MASK NO_OS_BIT(0)
93#define ADIN1300_GE_CLK_CFG NO_OS_MDIO_C45_ADDR(0x1e, 0xff1f)
94#define ADIN1300_GE_CLK_RCVR_125_EN_MASK NO_OS_BIT(5)
95#define ADIN1300_GE_CLK_FREE_125_EN_MASK NO_OS_BIT(4)
96#define ADIN1300_GE_REF_CLK_EN_MASK NO_OS_BIT(3)
97#define ADIN1300_GE_CLK_HRT_RCVR_EN_MASK NO_OS_BIT(2)
98#define ADIN1300_GE_CLK_HRT_FREE_EN_MASK NO_OS_BIT(1)
99#define ADIN1300_GE_CLK_25_EN_MASK NO_OS_BIT(0)
101#define ADIN1300_GE_RGMII_CFG NO_OS_MDIO_C45_ADDR(0x1e, 0xff23)
102#define ADIN1300_GE_RGMII_100_LOW_LTNCY_EN_MSK NO_OS_BIT(10)
103#define ADIN1300_GE_RGMII_10_LOW_LTNCY_EN_MSK NO_OS_BIT(9)
104#define ADIN1300_GE_RGMII_RX_SEL_MASK NO_OS_GENMASK(8, 6)
105#define ADIN1300_GE_RGMII_GTX_SEL_MASK NO_OS_GENMASK(5, 3)
106#define ADIN1300_GE_RGMII_RX_ID_EN_MASK NO_OS_BIT(2)
107#define ADIN1300_GE_RGMII_TX_ID_EN_MASK NO_OS_BIT(1)
108#define ADIN1300_GE_RGMII_EN_MASK NO_OS_BIT(0)
110#define ADIN1300_GE_B10_REGEN_PRE NO_OS_MDIO_C45_ADDR(0x1e, 0xff38)
111#define ADIN1300_GE_B10_REGEN_PRE_MSK NO_OS_BIT(0)
adin1300_speed
Definition adin1300.h:113
@ ADIN1300_1000_BASE_T_FULLDUPLEX
Definition adin1300.h:119
@ ADIN1300_1000_BASE_T_HALFDUPLEX
Definition adin1300.h:118
@ ADIN1300_10_BASE_T_HALFDUPLEX
Definition adin1300.h:114
@ ADIN1300_10_BASE_T_FULLDUPLEX
Definition adin1300.h:115
@ ADIN1300_100_BASE_TX_FULLDUPLEX
Definition adin1300.h:117
@ ADIN1300_100_BASE_TX_HALFDUPLEX
Definition adin1300.h:116
int adin1300_config_speed(struct adin1300_desc *dev, enum adin1300_speed speed_cap)
Definition adin1300.c:194
adin1300_rgmii_idelay
Definition adin1300.h:130
@ ADIN1300_RGMII_1_60_NS
Definition adin1300.h:132
@ ADIN1300_RGMII_2_00_NS
Definition adin1300.h:131
@ ADIN1300_RGMII_1_80_NS
Definition adin1300.h:133
@ ADIN1300_RGMII_2_20_NS
Definition adin1300.h:134
@ ADIN1300_RGMII_2_40_NS
Definition adin1300.h:135
adin1300_gp_clk_source
Definition adin1300.h:122
@ ADIN1300_GP_CLK_FREE
Definition adin1300.h:126
@ ADIN1300_GP_CLK_HEARTBEAT_RECOVERED
Definition adin1300.h:125
@ ADIN1300_GP_CLK_REFERENCE
Definition adin1300.h:123
@ ADIN1300_GP_CLK_RECOVERED
Definition adin1300.h:127
@ ADIN1300_GP_CLK_HEARTBEAT_FREE
Definition adin1300.h:124
int adin1300_remove(struct adin1300_desc *dev)
Definition adin1300.c:112
int adin1300_init(struct adin1300_desc **dev, struct adin1300_init_param *param)
Definition adin1300.c:9
int adin1300_config_clk25_ref(struct adin1300_desc *dev, bool on)
Definition adin1300.c:188
enum adin1300_speed adin1300_resolved_speed(struct adin1300_desc *dev)
Definition adin1300.c:258
int adin1300_write(struct adin1300_desc *dev, uint32_t addr, uint16_t val)
Definition adin1300.c:120
bool adin1300_link_is_up(struct adin1300_desc *dev)
Definition adin1300.c:246
int adin1300_hard_reset(struct adin1300_desc *dev)
Definition adin1300.c:96
int adin1300_config_rgmii(struct adin1300_desc *dev, struct adin1300_rgmii_config rgmii)
Definition adin1300.c:148
int adin1300_write_bits(struct adin1300_desc *dev, uint32_t addr, uint16_t val, uint16_t bitmask)
Definition adin1300.c:132
int adin1300_config_gp_clk(struct adin1300_desc *dev, bool on, enum adin1300_gp_clk_source source)
Definition adin1300.c:168
int adin1300_autoneg(struct adin1300_desc *dev, bool on)
Definition adin1300.c:239
int adin1300_read(struct adin1300_desc *dev, uint32_t addr, uint16_t *val)
Definition adin1300.c:126
int adin1300_soft_reset(struct adin1300_desc *dev)
Definition adin1300.c:83
Header file for MDIO interface driver.
Header file of utility functions.
Definition adin1300.h:157
struct no_os_gpio_desc * reset_gpio
Definition adin1300.h:158
struct no_os_mdio_desc * mdio
Definition adin1300.h:159
Definition adin1300.h:146
enum adin1300_speed speed_cap
Definition adin1300.h:153
struct no_os_gpio_init_param * reset_param
Definition adin1300.h:147
struct no_os_mdio_init_param mdio_param
Definition adin1300.h:148
struct adin1300_rgmii_config rgmii_config
Definition adin1300.h:149
enum adin1300_gp_clk_source gp_clk_source
Definition adin1300.h:151
bool gp_clk
Definition adin1300.h:150
bool clk25_ref
Definition adin1300.h:152
bool autoneg
Definition adin1300.h:154
Definition adin1300.h:138
bool tx_idelay_en
Definition adin1300.h:139
enum adin1300_rgmii_idelay rx_idelay
Definition adin1300.h:142
enum adin1300_rgmii_idelay tx_idelay
Definition adin1300.h:140
bool rx_idelay_en
Definition adin1300.h:141
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
MDIO device descriptor created with no_os_mdio_init().
Definition no_os_mdio.h:78
uint8_t addr
Definition no_os_mdio.h:81
Parameters for an MDIO slave.
Definition no_os_mdio.h:60