@@ -43,14 +43,20 @@ LOG_MODULE_REGISTER(eth_xmc4xxx);
43
43
#define INFINEON_OUI_B1 0x03
44
44
#define INFINEON_OUI_B2 0x19
45
45
46
- #define MODULO_INC_TX (val ) {(val) = (++(val) < NUM_TX_DMA_DESCRIPTORS) ? (val) : 0; }
47
- #define MODULO_INC_RX (val ) {(val) = (++(val) < NUM_RX_DMA_DESCRIPTORS) ? (val) : 0; }
46
+ #define MODULO_INC_TX (val ) \
47
+ { \
48
+ (val) = (++(val) < NUM_TX_DMA_DESCRIPTORS) ? (val) : 0; \
49
+ }
50
+ #define MODULO_INC_RX (val ) \
51
+ { \
52
+ (val) = (++(val) < NUM_RX_DMA_DESCRIPTORS) ? (val) : 0; \
53
+ }
48
54
49
55
#define IS_OWNED_BY_DMA_TX (desc ) (((desc)->status & ETH_MAC_DMA_TDES0_OWN) != 0)
50
56
#define IS_OWNED_BY_DMA_RX (desc ) (((desc)->status & ETH_MAC_DMA_RDES0_OWN) != 0)
51
57
52
58
#define IS_START_OF_FRAME_RX (desc ) (((desc)->status & ETH_MAC_DMA_RDES0_FS) != 0)
53
- #define IS_END_OF_FRAME_RX (desc ) (((desc)->status & ETH_MAC_DMA_RDES0_LS) != 0)
59
+ #define IS_END_OF_FRAME_RX (desc ) (((desc)->status & ETH_MAC_DMA_RDES0_LS) != 0)
54
60
55
61
#define IS_TIMESTAMP_AVAILABLE_RX (desc ) (((desc)->status & ETH_MAC_DMA_RDES0_TSA) != 0)
56
62
#define IS_TIMESTAMP_AVAILABLE_TX (desc ) (((desc)->status & ETH_MAC_DMA_TDES0_TTSS) != 0)
@@ -69,23 +75,23 @@ LOG_MODULE_REGISTER(eth_xmc4xxx);
69
75
XMC_ETH_MAC_EVENT_RECEIVE | XMC_ETH_MAC_EVENT_TRANSMIT | ETH_INTERRUPT_ENABLE_NIE_Msk | \
70
76
ETH_INTERRUPT_ENABLE_AIE_Msk)
71
77
72
- #define ETH_MAC_DISABLE_MMC_INTERRUPT_MSK 0x03ffffffu
73
- #define ETH_MAC_DISABLE_MMC_IPC_RECEIVE_INTERRUPT_MSK 0x3fff3fffu
78
+ #define ETH_MAC_DISABLE_MMC_INTERRUPT_MSK 0x03ffffffu
79
+ #define ETH_MAC_DISABLE_MMC_IPC_RECEIVE_INTERRUPT_MSK 0x3fff3fffu
74
80
75
81
#define ETH_STATUS_CLEARABLE_BITS 0x1e7ffu
76
82
77
83
#define ETH_RX_DMA_DESC_SECOND_ADDR_CHAINED_MASK BIT(14)
78
84
79
- #define ETH_RESET_TIMEOUT_USEC 200000u
85
+ #define ETH_RESET_TIMEOUT_USEC 200000u
80
86
#define ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC 100000u
81
87
82
- #define ETH_LINK_SPEED_10M 0
88
+ #define ETH_LINK_SPEED_10M 0
83
89
#define ETH_LINK_SPEED_100M 1
84
90
85
91
#define ETH_LINK_DUPLEX_HALF 0
86
92
#define ETH_LINK_DUPLEX_FULL 1
87
93
88
- #define ETH_PTP_CLOCK_FREQUENCY 50000000
94
+ #define ETH_PTP_CLOCK_FREQUENCY 50000000
89
95
#define ETH_PTP_RATE_ADJUST_RATIO_MIN 0.9
90
96
#define ETH_PTP_RATE_ADJUST_RATIO_MAX 1.1
91
97
@@ -467,7 +473,6 @@ static struct net_pkt *eth_xmc4xxx_rx_pkt(const struct device *dev)
467
473
dma_desc = & rx_dma_desc [tail ];
468
474
}
469
475
470
-
471
476
MODULO_INC_RX (tail );
472
477
dev_data -> dma_desc_rx_tail = tail ;
473
478
@@ -605,12 +610,10 @@ static inline void eth_xmc4xxx_set_link(ETH_GLOBAL_TypeDef *regs, struct phy_lin
605
610
606
611
reg &= ~(ETH_MAC_CONFIGURATION_DM_Msk | ETH_MAC_CONFIGURATION_FES_Msk );
607
612
608
- val = PHY_LINK_IS_FULL_DUPLEX (state -> speed ) ? ETH_LINK_DUPLEX_FULL :
609
- ETH_LINK_DUPLEX_HALF ;
613
+ val = PHY_LINK_IS_FULL_DUPLEX (state -> speed ) ? ETH_LINK_DUPLEX_FULL : ETH_LINK_DUPLEX_HALF ;
610
614
reg |= FIELD_PREP (ETH_MAC_CONFIGURATION_DM_Msk , val );
611
615
612
- val = PHY_LINK_IS_SPEED_100M (state -> speed ) ? ETH_LINK_SPEED_100M :
613
- ETH_LINK_SPEED_10M ;
616
+ val = PHY_LINK_IS_SPEED_100M (state -> speed ) ? ETH_LINK_SPEED_100M : ETH_LINK_SPEED_10M ;
614
617
reg |= FIELD_PREP (ETH_MAC_CONFIGURATION_FES_Msk , val );
615
618
616
619
regs -> MAC_CONFIGURATION = reg ;
@@ -708,8 +711,8 @@ static int eth_xmc4xxx_rx_dma_descriptors_init(const struct device *dev)
708
711
709
712
for (int i = 0 ; i < NUM_RX_DMA_DESCRIPTORS ; i ++ ) {
710
713
XMC_ETH_MAC_DMA_DESC_t * dma_desc = & rx_dma_desc [i ];
711
- struct net_buf * rx_buf = net_pkt_get_reserve_rx_data ( CONFIG_NET_BUF_DATA_SIZE ,
712
- K_NO_WAIT );
714
+ struct net_buf * rx_buf =
715
+ net_pkt_get_reserve_rx_data ( CONFIG_NET_BUF_DATA_SIZE , K_NO_WAIT );
713
716
714
717
if (rx_buf == NULL ) {
715
718
eth_xmc4xxx_free_rx_bufs (dev );
@@ -733,8 +736,8 @@ static inline int eth_xmc4xxx_reset(const struct device *dev)
733
736
dev_cfg -> regs -> BUS_MODE |= ETH_BUS_MODE_SWR_Msk ;
734
737
735
738
/* reset may fail if the clocks are not properly setup */
736
- if (!WAIT_FOR ((dev_cfg -> regs -> BUS_MODE & ETH_BUS_MODE_SWR_Msk ) == 0 ,
737
- ETH_RESET_TIMEOUT_USEC , )) {
739
+ if (!WAIT_FOR ((dev_cfg -> regs -> BUS_MODE & ETH_BUS_MODE_SWR_Msk ) == 0 , ETH_RESET_TIMEOUT_USEC ,
740
+ NULL )) {
738
741
return - ETIMEDOUT ;
739
742
}
740
743
@@ -763,14 +766,14 @@ static inline void eth_xmc4xxx_mask_unused_interrupts(ETH_GLOBAL_TypeDef *regs)
763
766
static inline int eth_xmc4xxx_init_timestamp_control_reg (ETH_GLOBAL_TypeDef * regs )
764
767
{
765
768
#if defined(CONFIG_NET_GPTP )
766
- regs -> TIMESTAMP_CONTROL = ETH_TIMESTAMP_CONTROL_TSENA_Msk |
767
- ETH_TIMESTAMP_CONTROL_TSENALL_Msk ;
769
+ regs -> TIMESTAMP_CONTROL =
770
+ ETH_TIMESTAMP_CONTROL_TSENA_Msk | ETH_TIMESTAMP_CONTROL_TSENALL_Msk ;
768
771
#endif
769
772
770
773
#if defined(CONFIG_PTP_CLOCK_XMC4XXX )
771
774
/* use fine control */
772
- regs -> TIMESTAMP_CONTROL |= ETH_TIMESTAMP_CONTROL_TSCFUPDT_Msk |
773
- ETH_TIMESTAMP_CONTROL_TSCTRLSSR_Msk ;
775
+ regs -> TIMESTAMP_CONTROL |=
776
+ ETH_TIMESTAMP_CONTROL_TSCFUPDT_Msk | ETH_TIMESTAMP_CONTROL_TSCTRLSSR_Msk ;
774
777
775
778
/* make ptp run at 50MHz - implies 20ns increment for each increment of the */
776
779
/* sub_second_register */
@@ -780,20 +783,20 @@ static inline int eth_xmc4xxx_init_timestamp_control_reg(ETH_GLOBAL_TypeDef *reg
780
783
/* Therefore, K = ceil(f_out * 2^32 / f_cpu) */
781
784
782
785
uint32_t f_cpu = XMC_SCU_CLOCK_GetSystemClockFrequency ();
783
- uint32_t K = (BIT64 (32 ) * ETH_PTP_CLOCK_FREQUENCY + f_cpu / 2 ) / f_cpu ;
786
+ uint32_t K = (BIT64 (32 ) * ETH_PTP_CLOCK_FREQUENCY + f_cpu / 2 ) / f_cpu ;
784
787
785
788
regs -> TIMESTAMP_ADDEND = K ;
786
789
787
790
/* Addend register update */
788
791
regs -> TIMESTAMP_CONTROL |= ETH_TIMESTAMP_CONTROL_TSADDREG_Msk ;
789
792
if (!WAIT_FOR ((regs -> TIMESTAMP_CONTROL & ETH_TIMESTAMP_CONTROL_TSADDREG_Msk ) == 0 ,
790
- ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC , )) {
793
+ ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC , NULL )) {
791
794
return - ETIMEDOUT ;
792
795
}
793
796
794
797
regs -> TIMESTAMP_CONTROL |= ETH_TIMESTAMP_CONTROL_TSINIT_Msk ;
795
798
if (!WAIT_FOR ((regs -> TIMESTAMP_CONTROL & ETH_TIMESTAMP_CONTROL_TSINIT_Msk ) == 0 ,
796
- ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC , )) {
799
+ ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC , NULL )) {
797
800
return - ETIMEDOUT ;
798
801
}
799
802
#endif
@@ -808,8 +811,7 @@ static int eth_xmc4xxx_init(const struct device *dev)
808
811
int ret ;
809
812
810
813
sys_slist_init (& dev_data -> tx_frame_list );
811
- k_sem_init (& dev_data -> tx_desc_sem , NUM_TX_DMA_DESCRIPTORS ,
812
- NUM_TX_DMA_DESCRIPTORS );
814
+ k_sem_init (& dev_data -> tx_desc_sem , NUM_TX_DMA_DESCRIPTORS , NUM_TX_DMA_DESCRIPTORS );
813
815
814
816
if (!device_is_ready (dev_cfg -> phy_dev )) {
815
817
LOG_ERR ("Phy device not ready" );
@@ -842,7 +844,6 @@ static int eth_xmc4xxx_init(const struct device *dev)
842
844
/* disable jumbo frames */
843
845
dev_cfg -> regs -> MAC_CONFIGURATION &= ~ETH_MAC_CONFIGURATION_JE_Msk ;
844
846
845
-
846
847
/* Initialize Filter registers - disable zero quanta pause*/
847
848
dev_cfg -> regs -> FLOW_CONTROL = ETH_FLOW_CONTROL_DZPQ_Msk ;
848
849
@@ -893,8 +894,8 @@ static int eth_xmc4xxx_init(const struct device *dev)
893
894
static enum ethernet_hw_caps eth_xmc4xxx_capabilities (const struct device * dev )
894
895
{
895
896
ARG_UNUSED (dev );
896
- enum ethernet_hw_caps caps = ETHERNET_LINK_10BASE | ETHERNET_LINK_100BASE |
897
- ETHERNET_HW_TX_CHKSUM_OFFLOAD | ETHERNET_HW_RX_CHKSUM_OFFLOAD ;
897
+ enum ethernet_hw_caps caps = ETHERNET_LINK_10BASE | ETHERNET_LINK_100BASE |
898
+ ETHERNET_HW_TX_CHKSUM_OFFLOAD | ETHERNET_HW_RX_CHKSUM_OFFLOAD ;
898
899
899
900
#if defined(CONFIG_PTP_CLOCK_XMC4XXX )
900
901
caps |= ETHERNET_PTP ;
@@ -947,7 +948,6 @@ static const struct device *eth_xmc4xxx_get_ptp_clock(const struct device *dev)
947
948
}
948
949
#endif
949
950
950
-
951
951
#if defined(CONFIG_ETH_XMC4XXX_VLAN_HW_FILTER )
952
952
int eth_xmc4xxx_vlan_setup (const struct device * dev , struct net_if * iface , uint16_t tag ,
953
953
bool enable )
@@ -959,8 +959,7 @@ int eth_xmc4xxx_vlan_setup(const struct device *dev, struct net_if *iface, uint1
959
959
960
960
if (enable ) {
961
961
dev_cfg -> regs -> VLAN_TAG = FIELD_PREP (ETH_VLAN_TAG_VL_Msk , tag ) |
962
- ETH_VLAN_TAG_ETV_Msk |
963
- ETH_VLAN_TAG_ESVL_Msk ;
962
+ ETH_VLAN_TAG_ETV_Msk | ETH_VLAN_TAG_ESVL_Msk ;
964
963
dev_cfg -> regs -> MAC_FRAME_FILTER |= ETH_MAC_FRAME_FILTER_VTFE_Msk ;
965
964
} else {
966
965
dev_cfg -> regs -> VLAN_TAG = 0 ;
@@ -996,19 +995,18 @@ static struct eth_xmc4xxx_config eth_xmc4xxx_config = {
996
995
.phy_dev = DEVICE_DT_GET (DT_INST_PHANDLE (0 , phy_handle )),
997
996
.pcfg = PINCTRL_DT_INST_DEV_CONFIG_GET (0 ),
998
997
.port_ctrl = {
999
- .rxd0 = DT_INST_ENUM_IDX (0 , rxd0_port_ctrl ),
1000
- .rxd1 = DT_INST_ENUM_IDX (0 , rxd1_port_ctrl ),
1001
- .rxd2 = DT_INST_ENUM_IDX_OR (0 , rxd2_port_ctrl , 0 ),
1002
- .rxd3 = DT_INST_ENUM_IDX_OR (0 , rxd3_port_ctrl , 0 ),
1003
- .clk_rmii = DT_INST_ENUM_IDX (0 , rmii_rx_clk_port_ctrl ),
1004
- .crs_dv = DT_INST_ENUM_IDX (0 , crs_rx_dv_port_ctrl ),
1005
- .crs = DT_INST_ENUM_IDX_OR (0 , crs_port_ctrl , 0 ),
1006
- .rxer = DT_INST_ENUM_IDX (0 , rxer_port_ctrl ),
1007
- .col = DT_INST_ENUM_IDX_OR (0 , col_port_ctrl , 0 ),
1008
- .clk_tx = DT_INST_ENUM_IDX_OR (0 , tx_clk_port_ctrl , 0 ),
1009
- .mode = DT_INST_ENUM_IDX_OR (0 , phy_connection_type , 0 ),
1010
- }
1011
- };
998
+ .rxd0 = DT_INST_ENUM_IDX (0 , rxd0_port_ctrl ),
999
+ .rxd1 = DT_INST_ENUM_IDX (0 , rxd1_port_ctrl ),
1000
+ .rxd2 = DT_INST_ENUM_IDX_OR (0 , rxd2_port_ctrl , 0 ),
1001
+ .rxd3 = DT_INST_ENUM_IDX_OR (0 , rxd3_port_ctrl , 0 ),
1002
+ .clk_rmii = DT_INST_ENUM_IDX (0 , rmii_rx_clk_port_ctrl ),
1003
+ .crs_dv = DT_INST_ENUM_IDX (0 , crs_rx_dv_port_ctrl ),
1004
+ .crs = DT_INST_ENUM_IDX_OR (0 , crs_port_ctrl , 0 ),
1005
+ .rxer = DT_INST_ENUM_IDX (0 , rxer_port_ctrl ),
1006
+ .col = DT_INST_ENUM_IDX_OR (0 , col_port_ctrl , 0 ),
1007
+ .clk_tx = DT_INST_ENUM_IDX_OR (0 , tx_clk_port_ctrl , 0 ),
1008
+ .mode = DT_INST_ENUM_IDX_OR (0 , phy_connection_type , 0 ),
1009
+ }};
1012
1010
1013
1011
static struct eth_xmc4xxx_data eth_xmc4xxx_data = {
1014
1012
.mac_addr = DT_INST_PROP_OR (0 , local_mac_address , {0 }),
@@ -1035,7 +1033,7 @@ static int eth_xmc4xxx_ptp_clock_set(const struct device *dev, struct net_ptp_ti
1035
1033
1036
1034
dev_cfg -> regs -> TIMESTAMP_CONTROL |= ETH_TIMESTAMP_CONTROL_TSINIT_Msk ;
1037
1035
if (!WAIT_FOR ((dev_cfg -> regs -> TIMESTAMP_CONTROL & ETH_TIMESTAMP_CONTROL_TSINIT_Msk ) == 0 ,
1038
- ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC , )) {
1036
+ ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC , NULL )) {
1039
1037
return - ETIMEDOUT ;
1040
1038
}
1041
1039
@@ -1088,7 +1086,7 @@ static int eth_xmc4xxx_ptp_clock_adjust(const struct device *dev, int increment)
1088
1086
1089
1087
dev_cfg -> regs -> TIMESTAMP_CONTROL |= ETH_TIMESTAMP_CONTROL_TSUPDT_Msk ;
1090
1088
if (!WAIT_FOR ((dev_cfg -> regs -> TIMESTAMP_CONTROL & ETH_TIMESTAMP_CONTROL_TSUPDT_Msk ) == 0 ,
1091
- ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC , )) {
1089
+ ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC , NULL )) {
1092
1090
return - ETIMEDOUT ;
1093
1091
}
1094
1092
@@ -1116,7 +1114,7 @@ static int eth_xmc4xxx_ptp_clock_rate_adjust(const struct device *dev, double ra
1116
1114
/* Addend register update */
1117
1115
dev_cfg -> regs -> TIMESTAMP_CONTROL |= ETH_TIMESTAMP_CONTROL_TSADDREG_Msk ;
1118
1116
if (!WAIT_FOR ((dev_cfg -> regs -> TIMESTAMP_CONTROL & ETH_TIMESTAMP_CONTROL_TSADDREG_Msk ) == 0 ,
1119
- ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC , )) {
1117
+ ETH_TIMESTAMP_CONTROL_REG_TIMEOUT_USEC , NULL )) {
1120
1118
return - ETIMEDOUT ;
1121
1119
}
1122
1120
0 commit comments