Commit aa0ecfeb9d60d82e095daa0d6271f77b2c25d3fb
Committed by
Albert ARIBAUD
1 parent
79788bb19a
Exists in
master
and in
54 other branches
Armada100: Enable Ethernet support for GplugD
This patch enables ethernet support for Marvell GplugD board. Network related commands works. Signed-off-by: Ajay Bhargav <ajay.bhargav@einfochips.com>
Showing 4 changed files with 128 additions and 2 deletions Side-by-side Diff
arch/arm/include/asm/arch-armada100/armada100.h
... | ... | @@ -41,6 +41,10 @@ |
41 | 41 | /* Functional Clock Selection Mask */ |
42 | 42 | #define APBC_FNCLKSEL(x) (((x) & 0xf) << 4) |
43 | 43 | |
44 | +/* Fast Ethernet Controller Clock register definition */ | |
45 | +#define FE_CLK_RST 0x1 | |
46 | +#define FE_CLK_ENA 0x8 | |
47 | + | |
44 | 48 | /* Register Base Addresses */ |
45 | 49 | #define ARMD1_DRAM_BASE 0xB0000000 |
46 | 50 | #define ARMD1_FEC_BASE 0xC0800000 |
... | ... | @@ -82,6 +86,59 @@ |
82 | 86 | u32 aprr; /*0x1020*/ |
83 | 87 | u32 acgr; /*0x1024*/ |
84 | 88 | u32 arsr; /*0x1028*/ |
89 | +}; | |
90 | + | |
91 | +/* | |
92 | + * Application Subsystem Power Management | |
93 | + * Refer Datasheet Appendix A.9 | |
94 | + */ | |
95 | +struct armd1apmu_registers { | |
96 | + u32 pcr; /* 0x000 */ | |
97 | + u32 ccr; /* 0x004 */ | |
98 | + u32 pad1; | |
99 | + u32 ccsr; /* 0x00C */ | |
100 | + u32 fc_timer; /* 0x010 */ | |
101 | + u32 pad2; | |
102 | + u32 ideal_cfg; /* 0x018 */ | |
103 | + u8 pad3[0x04C - 0x018 - 4]; | |
104 | + u32 lcdcrc; /* 0x04C */ | |
105 | + u32 cciccrc; /* 0x050 */ | |
106 | + u32 sd1crc; /* 0x054 */ | |
107 | + u32 sd2crc; /* 0x058 */ | |
108 | + u32 usbcrc; /* 0x05C */ | |
109 | + u32 nfccrc; /* 0x060 */ | |
110 | + u32 dmacrc; /* 0x064 */ | |
111 | + u32 pad4; | |
112 | + u32 buscrc; /* 0x06C */ | |
113 | + u8 pad5[0x07C - 0x06C - 4]; | |
114 | + u32 wake_clr; /* 0x07C */ | |
115 | + u8 pad6[0x090 - 0x07C - 4]; | |
116 | + u32 core_status; /* 0x090 */ | |
117 | + u32 rfsc; /* 0x094 */ | |
118 | + u32 imr; /* 0x098 */ | |
119 | + u32 irwc; /* 0x09C */ | |
120 | + u32 isr; /* 0x0A0 */ | |
121 | + u8 pad7[0x0B0 - 0x0A0 - 4]; | |
122 | + u32 mhst; /* 0x0B0 */ | |
123 | + u32 msr; /* 0x0B4 */ | |
124 | + u8 pad8[0x0C0 - 0x0B4 - 4]; | |
125 | + u32 msst; /* 0x0C0 */ | |
126 | + u32 pllss; /* 0x0C4 */ | |
127 | + u32 smb; /* 0x0C8 */ | |
128 | + u32 gccrc; /* 0x0CC */ | |
129 | + u8 pad9[0x0D4 - 0x0CC - 4]; | |
130 | + u32 smccrc; /* 0x0D4 */ | |
131 | + u32 pad10; | |
132 | + u32 xdcrc; /* 0x0DC */ | |
133 | + u32 sd3crc; /* 0x0E0 */ | |
134 | + u32 sd4crc; /* 0x0E4 */ | |
135 | + u8 pad11[0x0F0 - 0x0E4 - 4]; | |
136 | + u32 cfcrc; /* 0x0F0 */ | |
137 | + u32 mspcrc; /* 0x0F4 */ | |
138 | + u32 cmucrc; /* 0x0F8 */ | |
139 | + u32 fecrc; /* 0x0FC */ | |
140 | + u32 pciecrc; /* 0x100 */ | |
141 | + u32 epdcrc; /* 0x104 */ | |
85 | 142 | }; |
86 | 143 | |
87 | 144 | /* |
arch/arm/include/asm/arch-armada100/mfp.h
... | ... | @@ -64,6 +64,25 @@ |
64 | 64 | #define MFP105_CI2C_SDA (MFP_REG(0x1a4) | MFP_AF1 | MFP_DRIVE_MEDIUM) |
65 | 65 | #define MFP106_CI2C_SCL (MFP_REG(0x1a8) | MFP_AF1 | MFP_DRIVE_MEDIUM) |
66 | 66 | |
67 | +/* Fast Ethernet */ | |
68 | +#define MFP086_ETH_TXCLK (MFP_REG(0x158) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
69 | +#define MFP087_ETH_TXEN (MFP_REG(0x15C) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
70 | +#define MFP088_ETH_TXDQ3 (MFP_REG(0x160) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
71 | +#define MFP089_ETH_TXDQ2 (MFP_REG(0x164) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
72 | +#define MFP090_ETH_TXDQ1 (MFP_REG(0x168) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
73 | +#define MFP091_ETH_TXDQ0 (MFP_REG(0x16C) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
74 | +#define MFP092_ETH_CRS (MFP_REG(0x170) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
75 | +#define MFP093_ETH_COL (MFP_REG(0x174) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
76 | +#define MFP094_ETH_RXCLK (MFP_REG(0x178) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
77 | +#define MFP095_ETH_RXER (MFP_REG(0x17C) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
78 | +#define MFP096_ETH_RXDQ3 (MFP_REG(0x180) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
79 | +#define MFP097_ETH_RXDQ2 (MFP_REG(0x184) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
80 | +#define MFP098_ETH_RXDQ1 (MFP_REG(0x188) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
81 | +#define MFP099_ETH_RXDQ0 (MFP_REG(0x18C) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
82 | +#define MFP100_ETH_MDC (MFP_REG(0x190) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
83 | +#define MFP101_ETH_MDIO (MFP_REG(0x194) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
84 | +#define MFP103_ETH_RXDV (MFP_REG(0x19C) | MFP_AF5 | MFP_DRIVE_MEDIUM) | |
85 | + | |
67 | 86 | /* More macros can be defined here... */ |
68 | 87 | |
69 | 88 | #define MFP_PIN_MAX 117 |
board/Marvell/gplugd/gplugd.c
... | ... | @@ -33,6 +33,11 @@ |
33 | 33 | #include <asm/arch/mfp.h> |
34 | 34 | #include <asm/arch/armada100.h> |
35 | 35 | |
36 | +#ifdef CONFIG_ARMADA100_FEC | |
37 | +#include <net.h> | |
38 | +#include <netdev.h> | |
39 | +#endif /* CONFIG_ARMADA100_FEC */ | |
40 | + | |
36 | 41 | DECLARE_GLOBAL_DATA_PTR; |
37 | 42 | |
38 | 43 | int board_early_init_f(void) |
... | ... | @@ -45,6 +50,26 @@ |
45 | 50 | /* Enable Console on UART3 */ |
46 | 51 | MFPO8_UART3_TXD, |
47 | 52 | MFPO9_UART3_RXD, |
53 | + | |
54 | + /* Ethernet PHY Interface */ | |
55 | + MFP086_ETH_TXCLK, | |
56 | + MFP087_ETH_TXEN, | |
57 | + MFP088_ETH_TXDQ3, | |
58 | + MFP089_ETH_TXDQ2, | |
59 | + MFP090_ETH_TXDQ1, | |
60 | + MFP091_ETH_TXDQ0, | |
61 | + MFP092_ETH_CRS, | |
62 | + MFP093_ETH_COL, | |
63 | + MFP094_ETH_RXCLK, | |
64 | + MFP095_ETH_RXER, | |
65 | + MFP096_ETH_RXDQ3, | |
66 | + MFP097_ETH_RXDQ2, | |
67 | + MFP098_ETH_RXDQ1, | |
68 | + MFP099_ETH_RXDQ0, | |
69 | + MFP100_ETH_MDC, | |
70 | + MFP101_ETH_MDIO, | |
71 | + MFP103_ETH_RXDV, | |
72 | + | |
48 | 73 | MFP_EOC /*End of configuration*/ |
49 | 74 | }; |
50 | 75 | /* configure MFP's */ |
... | ... | @@ -60,4 +85,17 @@ |
60 | 85 | gd->bd->bi_boot_params = armd1_sdram_base(0) + 0x100; |
61 | 86 | return 0; |
62 | 87 | } |
88 | + | |
89 | +#ifdef CONFIG_ARMADA100_FEC | |
90 | +int board_eth_init(bd_t *bis) | |
91 | +{ | |
92 | + struct armd1apmu_registers *apmu_regs = | |
93 | + (struct armd1apmu_registers *)ARMD1_APMU_BASE; | |
94 | + | |
95 | + /* Enable clock of ethernet controller */ | |
96 | + writel(FE_CLK_RST | FE_CLK_ENA, &apmu_regs->fecrc); | |
97 | + | |
98 | + return armada100_fec_register(ARMD1_FEC_BASE); | |
99 | +} | |
100 | +#endif /* CONFIG_ARMADA100_FEC */ |
include/configs/gplugd.h
... | ... | @@ -62,8 +62,20 @@ |
62 | 62 | #define CONFIG_CMD_I2C |
63 | 63 | #define CONFIG_CMD_AUTOSCRIPT |
64 | 64 | #undef CONFIG_CMD_FPGA |
65 | -#undef CONFIG_CMD_NET | |
66 | -#undef CONFIG_CMD_NFS | |
65 | + | |
66 | +/* Disable DCACHE */ | |
67 | +#define CONFIG_SYS_DCACHE_OFF | |
68 | + | |
69 | +/* Network configuration */ | |
70 | +#ifdef CONFIG_CMD_NET | |
71 | +#define CONFIG_CMD_PING | |
72 | +#define CONFIG_NET_MULTI | |
73 | +#define CONFIG_ARMADA100_FEC | |
74 | + | |
75 | +/* DHCP Support */ | |
76 | +#define CONFIG_CMD_DHCP | |
77 | +#define CONFIG_BOOTP_DHCP_REQUEST_DELAY 50000 | |
78 | +#endif /* CONFIG_CMD_NET */ | |
67 | 79 | |
68 | 80 | /* |
69 | 81 | * mv-common.h should be defined after CMD configs since it used them |