[PATCH 1/3] pm9g45: fix Ethernet
Asen Chavdarov Dimov
dimov at ronetix.at
Thu Mar 1 11:21:27 EST 2012
Enable PHY, MACB and PIOs clocks.
Signed-off-by: Asen Chavdarov Dimov <dimov at ronetix.at>
---
arch/arm/boards/pm9g45/init.c | 31 +++++++++++++++++++++++++++++++
1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boards/pm9g45/init.c b/arch/arm/boards/pm9g45/init.c
index 480c751..9eba12a 100644
--- a/arch/arm/boards/pm9g45/init.c
+++ b/arch/arm/boards/pm9g45/init.c
@@ -82,6 +82,19 @@ static struct at91_ether_platform_data macb_pdata = {
.phy_addr = 0,
};
+static int phy_init(void)
+{
+ /*
+ * PD2 enables the 50MHz oscillator for Ethernet PHY
+ * 1 - enable
+ * 0 - disable
+ */
+ at91_set_gpio_output(AT91_PIN_PD2, 1);
+ at91_set_gpio_value(AT91_PIN_PD2, 1);
+
+ return 0;
+}
+
static int pm9g45_mem_init(void)
{
at91_add_device_sdram(128 * 1024 * 1024);
@@ -90,9 +103,27 @@ static int pm9g45_mem_init(void)
}
mem_initcall(pm9g45_mem_init);
+static const char *periph_clocks[] __initdata = {
+ "pioA_clk",
+ "pioB_clk",
+ "pioC_clk",
+ "pioDE_clk",
+ "macb_clk"
+};
+
static int pm9g45_devices_init(void)
{
+ struct clk *clk;
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(periph_clocks); i++) {
+ clk = clk_get(NULL, periph_clocks[i]);
+ clk_enable(clk);
+ }
+ phy_init();
+
pm_add_device_nand();
+
at91_add_device_eth(&macb_pdata);
devfs_add_partition("nand0", 0x00000, 0x80000, PARTITION_FIXED, "self_raw");
--
1.7.4.4
More information about the barebox
mailing list