mx25: add support for FEC on i.MX25
authorBaruch Siach <baruch@tkos.co.il>
Mon, 21 Dec 2009 11:44:31 +0000 (13:44 +0200)
committerSascha Hauer <s.hauer@pengutronix.de>
Mon, 4 Jan 2010 10:47:44 +0000 (11:47 +0100)
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
arch/arm/mach-mx25/clock.c
arch/arm/mach-mx25/devices.c
arch/arm/mach-mx25/devices.h
arch/arm/plat-mxc/include/mach/mx25.h

index ef26951..6e838b8 100644 (file)
@@ -173,6 +173,7 @@ DEFINE_CLOCK(pwm4_clk,       0, CCM_CGCR2,  2, get_rate_ipg, NULL);
 DEFINE_CLOCK(kpp_clk,   0, CCM_CGCR1, 28, get_rate_ipg, NULL);
 DEFINE_CLOCK(tsc_clk,   0, CCM_CGCR2, 13, get_rate_ipg, NULL);
 DEFINE_CLOCK(i2c_clk,   0, CCM_CGCR0,  6, get_rate_i2c, NULL);
+DEFINE_CLOCK(fec_clk,   0, CCM_CGCR0, 23, get_rate_ipg, NULL);
 
 #define _REGISTER_CLOCK(d, n, c)       \
        {                               \
@@ -204,6 +205,7 @@ static struct clk_lookup lookups[] = {
        _REGISTER_CLOCK("imx-i2c.0", NULL, i2c_clk)
        _REGISTER_CLOCK("imx-i2c.1", NULL, i2c_clk)
        _REGISTER_CLOCK("imx-i2c.2", NULL, i2c_clk)
+       _REGISTER_CLOCK("fec.0", NULL, fec_clk)
 };
 
 int __init mx25_clocks_init(unsigned long fref)
index 63511de..9fdeea1 100644 (file)
@@ -419,3 +419,22 @@ int __init mxc_register_gpios(void)
        return mxc_gpio_init(imx_gpio_ports, ARRAY_SIZE(imx_gpio_ports));
 }
 
+static struct resource mx25_fec_resources[] = {
+       {
+               .start  = MX25_FEC_BASE_ADDR,
+               .end    = MX25_FEC_BASE_ADDR + 0xfff,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = MX25_INT_FEC,
+               .end    = MX25_INT_FEC,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+struct platform_device mx25_fec_device = {
+       .name   = "fec",
+       .id     = 0,
+       .num_resources  = ARRAY_SIZE(mx25_fec_resources),
+       .resource       = mx25_fec_resources,
+};
index fe6bf88..fe5420f 100644 (file)
@@ -17,3 +17,4 @@ extern struct platform_device mxc_keypad_device;
 extern struct platform_device mxc_i2c_device0;
 extern struct platform_device mxc_i2c_device1;
 extern struct platform_device mxc_i2c_device2;
+extern struct platform_device mx25_fec_device;
index 91e7381..854e2dc 100644 (file)
@@ -41,4 +41,8 @@
 #define UART1_BASE_ADDR                        0x43f90000
 #define UART2_BASE_ADDR                        0x43f94000
 
+#define MX25_FEC_BASE_ADDR             0x50038000
+
+#define MX25_INT_FEC   57
+
 #endif /* __MACH_MX25_H__ */