Blame view

board/sunxi/gmac.c 2.55 KB
5835823da   Ian Campbell   sunxi: add gmac E...
1
2
3
4
5
6
7
  #include <common.h>
  #include <netdev.h>
  #include <miiphy.h>
  #include <asm/gpio.h>
  #include <asm/io.h>
  #include <asm/arch/clock.h>
  #include <asm/arch/gpio.h>
fc8991c61   Hans de Goede   sunxi: Fix gmac n...
8
  void eth_init_board(void)
5835823da   Ian Campbell   sunxi: add gmac E...
9
10
11
12
13
14
  {
  	int pin;
  	struct sunxi_ccm_reg *const ccm =
  		(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
  
  	/* Set up clock gating */
44d8ae5b6   Hans de Goede   sunxi: Introduce ...
15
  #ifdef CONFIG_SUNXI_GEN_SUN6I
eafec3200   Hans de Goede   sun6i: Add gmac s...
16
17
  	setbits_le32(&ccm->ahb_reset0_cfg, 0x1 << AHB_RESET_OFFSET_GMAC);
  	setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_GMAC);
44d8ae5b6   Hans de Goede   sunxi: Introduce ...
18
19
  #else
  	setbits_le32(&ccm->ahb_gate1, 0x1 << AHB_GATE_OFFSET_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
20
  #endif
5835823da   Ian Campbell   sunxi: add gmac E...
21
22
  
  	/* Set MII clock */
ef7e723ba   Chen-Yu Tsai   sunxi: Add suppor...
23
  #ifdef CONFIG_RGMII
5835823da   Ian Campbell   sunxi: add gmac E...
24
25
  	setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_INT_RGMII |
  		CCM_GMAC_CTRL_GPIT_RGMII);
c13f60d92   Hans de Goede   sunxi: Add a GMAC...
26
27
  	setbits_le32(&ccm->gmac_clk_cfg,
  		     CCM_GMAC_CTRL_TX_CLK_DELAY(CONFIG_GMAC_TX_DELAY));
ef7e723ba   Chen-Yu Tsai   sunxi: Add suppor...
28
29
30
31
  #else
  	setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_MII |
  		CCM_GMAC_CTRL_GPIT_MII);
  #endif
5835823da   Ian Campbell   sunxi: add gmac E...
32

eafec3200   Hans de Goede   sun6i: Add gmac s...
33
  #ifndef CONFIG_MACH_SUN6I
5835823da   Ian Campbell   sunxi: add gmac E...
34
35
  	/* Configure pin mux settings for GMAC */
  	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(16); pin++) {
ef7e723ba   Chen-Yu Tsai   sunxi: Add suppor...
36
  #ifdef CONFIG_RGMII
5835823da   Ian Campbell   sunxi: add gmac E...
37
38
39
  		/* skip unused pins in RGMII mode */
  		if (pin == SUNXI_GPA(9) || pin == SUNXI_GPA(14))
  			continue;
ef7e723ba   Chen-Yu Tsai   sunxi: Add suppor...
40
  #endif
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
41
  		sunxi_gpio_set_cfgpin(pin, SUN7I_GPA_GMAC);
5835823da   Ian Campbell   sunxi: add gmac E...
42
43
  		sunxi_gpio_set_drv(pin, 3);
  	}
eafec3200   Hans de Goede   sun6i: Add gmac s...
44
45
46
  #elif defined CONFIG_RGMII
  	/* Configure sun6i RGMII mode pin mux settings */
  	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(3); pin++) {
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
47
  		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
48
49
50
  		sunxi_gpio_set_drv(pin, 3);
  	}
  	for (pin = SUNXI_GPA(9); pin <= SUNXI_GPA(14); pin++) {
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
51
  		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
52
53
54
  		sunxi_gpio_set_drv(pin, 3);
  	}
  	for (pin = SUNXI_GPA(19); pin <= SUNXI_GPA(20); pin++) {
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
55
  		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
56
57
58
  		sunxi_gpio_set_drv(pin, 3);
  	}
  	for (pin = SUNXI_GPA(25); pin <= SUNXI_GPA(27); pin++) {
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
59
  		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
60
61
62
63
64
  		sunxi_gpio_set_drv(pin, 3);
  	}
  #elif defined CONFIG_GMII
  	/* Configure sun6i GMII mode pin mux settings */
  	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(27); pin++) {
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
65
  		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
66
67
68
69
70
  		sunxi_gpio_set_drv(pin, 2);
  	}
  #else
  	/* Configure sun6i MII mode pin mux settings */
  	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(3); pin++)
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
71
  		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
72
  	for (pin = SUNXI_GPA(8); pin <= SUNXI_GPA(9); pin++)
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
73
  		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
74
  	for (pin = SUNXI_GPA(11); pin <= SUNXI_GPA(14); pin++)
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
75
  		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
76
  	for (pin = SUNXI_GPA(19); pin <= SUNXI_GPA(24); pin++)
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
77
  		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
78
  	for (pin = SUNXI_GPA(26); pin <= SUNXI_GPA(27); pin++)
487b3277d   Paul Kocialkowski   sunxi: GPIO pin m...
79
  		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
eafec3200   Hans de Goede   sun6i: Add gmac s...
80
  #endif
5835823da   Ian Campbell   sunxi: add gmac E...
81
  }