Skip to content

Commit be387aa

Browse files
nandojvembolivar-nordic
authored andcommitted
drivers: eth: Update sam/sam0 eth drivers to use pinctrl
This update Atmel sam and sam0 ethernet gmac and mdio drivers to use pinctrl driver and API. It updates all boards with new pinctrl groups format. Signed-off-by: Gerson Fernando Budke <[email protected]>
1 parent 4c5e943 commit be387aa

File tree

16 files changed

+135
-73
lines changed

16 files changed

+135
-73
lines changed

boards/arm/atsame54_xpro/atsame54_xpro-pinctrl.dtsi

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,26 @@
1212
};
1313
};
1414

15+
gmac_rmii: gmac_rmii {
16+
group1 {
17+
pinmux = <PA14L_GMAC_GTXCK>,
18+
<PA17L_GMAC_GTXEN>,
19+
<PA18L_GMAC_GTX0>,
20+
<PA19L_GMAC_GTX1>,
21+
<PC20L_GMAC_GRXDV>,
22+
<PA13L_GMAC_GRX0>,
23+
<PA12L_GMAC_GRX1>,
24+
<PA15L_GMAC_GRXER>;
25+
};
26+
};
27+
28+
mdio_default: mdio_default {
29+
group1 {
30+
pinmux = <PC11L_GMAC_GMDC>,
31+
<PC12L_GMAC_GMDIO>;
32+
};
33+
};
34+
1535
sercom7_i2c_default: sercom7_i2c_default {
1636
group1 {
1737
pinmux = <PD8C_SERCOM7_PAD0>,

boards/arm/atsame54_xpro/atsame54_xpro.dts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ zephyr_udc0: &usb0 {
119119
status = "okay";
120120
zephyr,random-mac-address;
121121

122+
pinctrl-0 = <&gmac_rmii>;
123+
pinctrl-names = "default";
124+
122125
phy: phy {
123126
compatible = "ethernet-phy";
124127
status = "okay";
@@ -129,4 +132,7 @@ zephyr_udc0: &usb0 {
129132

130133
&mdio {
131134
status = "okay";
135+
136+
pinctrl-0 = <&mdio_default>;
137+
pinctrl-names = "default";
132138
};

boards/arm/atsame54_xpro/pinmux.c

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,6 @@ static int board_pinmux_init(const struct device *dev)
3030
return -ENXIO;
3131
}
3232

33-
#if (DT_NODE_HAS_STATUS(DT_NODELABEL(gmac), okay) && CONFIG_ETH_SAM_GMAC)
34-
pinmux_pin_set(muxa, 14, PINMUX_FUNC_L); /* PA14 = GTXCK */
35-
pinmux_pin_set(muxa, 17, PINMUX_FUNC_L); /* PA17 = GTXEN */
36-
pinmux_pin_set(muxa, 18, PINMUX_FUNC_L); /* PA18 = GTX0 */
37-
pinmux_pin_set(muxa, 19, PINMUX_FUNC_L); /* PA19 = GTX1 */
38-
pinmux_pin_set(muxc, 20, PINMUX_FUNC_L); /* PC20 = GRXDV */
39-
pinmux_pin_set(muxa, 13, PINMUX_FUNC_L); /* PA13 = GRX0 */
40-
pinmux_pin_set(muxa, 12, PINMUX_FUNC_L); /* PA12 = GRX1 */
41-
pinmux_pin_set(muxa, 15, PINMUX_FUNC_L); /* PA15 = GRXER */
42-
pinmux_pin_set(muxc, 11, PINMUX_FUNC_L); /* PC11 = GMDC */
43-
pinmux_pin_set(muxc, 12, PINMUX_FUNC_L); /* PC12 = GMDIO */
44-
#endif
45-
4633
return 0;
4734
}
4835

boards/arm/sam4e_xpro/sam4e_xpro-pinctrl.dtsi

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,33 @@
66
#include <dt-bindings/pinctrl/sam4eXe-pinctrl.h>
77

88
&pinctrl {
9+
gmac_mii: gmac_mii {
10+
group1 {
11+
pinmux = <PD0A_GMAC_GTXCK>,
12+
<PD1A_GMAC_GTXEN>,
13+
<PD2A_GMAC_GTX0>,
14+
<PD3A_GMAC_GTX1>,
15+
<PD15A_GMAC_GTX2>,
16+
<PD16A_GMAC_GTX3>,
17+
<PD4A_GMAC_GRXDV>,
18+
<PD5A_GMAC_GRX0>,
19+
<PD6A_GMAC_GRX1>,
20+
<PD11A_GMAC_GRX2>,
21+
<PD12A_GMAC_GRX3>,
22+
<PD7A_GMAC_GRXER>,
23+
<PD14A_GMAC_GRXCK>,
24+
<PD13A_GMAC_GCOL>,
25+
<PD10A_GMAC_GCRS>;
26+
};
27+
};
28+
29+
mdio_default: mdio_default {
30+
group1 {
31+
pinmux = <PD8A_GMAC_GMDC>,
32+
<PD9A_GMAC_GMDIO>;
33+
};
34+
};
35+
936
spi0_default: spi0_default {
1037
group1 {
1138
pinmux = <PA12A_SPI_MISO>,

boards/arm/sam4e_xpro/sam4e_xpro.dts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,10 @@
165165

166166
&gmac {
167167
status = "okay";
168+
169+
pinctrl-0 = <&gmac_mii>;
170+
pinctrl-names = "default";
171+
168172
zephyr,random-mac-address;
169173

170174
phy: phy {
@@ -177,6 +181,9 @@
177181

178182
&mdio {
179183
status = "okay";
184+
185+
pinctrl-0 = <&mdio_default>;
186+
pinctrl-names = "default";
180187
};
181188

182189
&wdt {

boards/arm/sam_e70_xplained/sam_e70_xplained-common.dtsi

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ zephyr_udc0: &usbhs {
112112
&gmac {
113113
status = "okay";
114114

115+
pinctrl-0 = <&gmac_rmii>;
116+
pinctrl-names = "default";
117+
115118
phy: phy {
116119
compatible = "ethernet-phy";
117120
status = "okay";
@@ -122,6 +125,9 @@ zephyr_udc0: &usbhs {
122125

123126
&mdio {
124127
status = "okay";
128+
129+
pinctrl-0 = <&mdio_default>;
130+
pinctrl-names = "default";
125131
};
126132

127133
&pwm0 {

boards/arm/sam_e70_xplained/sam_e70_xplained-pinctrl.dtsi

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,26 @@
2727
};
2828
};
2929

30+
gmac_rmii: gmac_rmii {
31+
group1 {
32+
pinmux = <PD0A_GMAC_GTXCK>,
33+
<PD1A_GMAC_GTXEN>,
34+
<PD2A_GMAC_GTX0>,
35+
<PD3A_GMAC_GTX1>,
36+
<PD4A_GMAC_GRXDV>,
37+
<PD5A_GMAC_GRX0>,
38+
<PD6A_GMAC_GRX1>,
39+
<PD7A_GMAC_GRXER>;
40+
};
41+
};
42+
43+
mdio_default: mdio_default {
44+
group1 {
45+
pinmux = <PD8A_GMAC_GMDC>,
46+
<PD9A_GMAC_GMDIO>;
47+
};
48+
};
49+
3050
pwm_default: pwm_default {
3151
group1 {
3252
pinmux = <PA0A_PWMC0_PWMH0>,

boards/arm/sam_v71_xult/sam_v71_xult-common.dtsi

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,9 @@ zephyr_udc0: &usbhs {
220220
&gmac {
221221
status = "okay";
222222

223+
pinctrl-0 = <&gmac_rmii>;
224+
pinctrl-names = "default";
225+
223226
phy: phy {
224227
compatible = "ethernet-phy";
225228
status = "okay";
@@ -230,6 +233,9 @@ zephyr_udc0: &usbhs {
230233

231234
&mdio {
232235
status = "okay";
236+
237+
pinctrl-0 = <&mdio_default>;
238+
pinctrl-names = "default";
233239
};
234240

235241
&pwm0 {

boards/arm/sam_v71_xult/sam_v71_xult-pinctrl.dtsi

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,26 @@
2727
};
2828
};
2929

30+
gmac_rmii: gmac_rmii {
31+
group1 {
32+
pinmux = <PD0A_GMAC_GTXCK>,
33+
<PD1A_GMAC_GTXEN>,
34+
<PD2A_GMAC_GTX0>,
35+
<PD3A_GMAC_GTX1>,
36+
<PD4A_GMAC_GRXDV>,
37+
<PD5A_GMAC_GRX0>,
38+
<PD6A_GMAC_GRX1>,
39+
<PD7A_GMAC_GRXER>;
40+
};
41+
};
42+
43+
mdio_default: mdio_default {
44+
group1 {
45+
pinmux = <PD8A_GMAC_GMDC>,
46+
<PD9A_GMAC_GMDIO>;
47+
};
48+
};
49+
3050
pwm_default: pwm_default {
3151
group1 {
3252
pinmux = <PA0A_PWMC0_PWMH0>,

drivers/ethernet/eth_sam_gmac.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME);
4242
#include <net/ethernet.h>
4343
#include <ethernet/eth_stats.h>
4444
#include <drivers/i2c.h>
45+
#include <drivers/pinctrl.h>
4546
#include <soc.h>
4647
#include "eth_sam_gmac_priv.h"
4748

@@ -1767,22 +1768,23 @@ static void queue5_isr(const struct device *dev)
17671768
static int eth_initialize(const struct device *dev)
17681769
{
17691770
const struct eth_sam_dev_cfg *const cfg = dev->config;
1771+
int retval;
17701772

17711773
cfg->config_func();
17721774

17731775
#ifdef CONFIG_SOC_FAMILY_SAM
17741776
/* Enable GMAC module's clock */
17751777
soc_pmc_peripheral_enable(cfg->periph_id);
17761778

1777-
/* Connect pins to the peripheral */
1778-
soc_gpio_list_configure(cfg->pin_list, cfg->pin_list_size);
17791779
#else
17801780
/* Enable MCLK clock on GMAC */
17811781
MCLK->AHBMASK.reg |= MCLK_AHBMASK_GMAC;
17821782
*MCLK_GMAC |= MCLK_GMAC_MASK;
17831783
#endif
1784+
/* Connect pins to the peripheral */
1785+
retval = pinctrl_apply_state(cfg->pcfg, PINCTRL_STATE_DEFAULT);
17841786

1785-
return 0;
1787+
return retval;
17861788
}
17871789

17881790
#ifdef CONFIG_ETH_SAM_GMAC_MAC_I2C_EEPROM
@@ -2203,16 +2205,13 @@ static void eth0_irq_config(void)
22032205
#endif
22042206
}
22052207

2206-
#ifdef CONFIG_SOC_FAMILY_SAM
2207-
static const struct soc_gpio_pin pins_eth0[] = ATMEL_SAM_DT_INST_PINS(0);
2208-
#endif
2208+
PINCTRL_DT_INST_DEFINE(0);
22092209

22102210
static const struct eth_sam_dev_cfg eth0_config = {
22112211
.regs = (Gmac *)DT_INST_REG_ADDR(0),
2212+
.pcfg = PINCTRL_DT_INST_DEV_CONFIG_GET(0),
22122213
#ifdef CONFIG_SOC_FAMILY_SAM
22132214
.periph_id = DT_INST_PROP_OR(0, peripheral_id, 0),
2214-
.pin_list = pins_eth0,
2215-
.pin_list_size = ARRAY_SIZE(pins_eth0),
22162215
#endif
22172216
.config_func = eth0_irq_config,
22182217
#if DT_NODE_EXISTS(DT_CHILD(DT_DRV_INST(0), phy))

0 commit comments

Comments
 (0)