Commit 6bd96f3c authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Sascha Hauer

ARM: imx: dynamically register fec devices

Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
parent 8a8d2060
...@@ -9,6 +9,10 @@ ...@@ -9,6 +9,10 @@
#include <mach/mx27.h> #include <mach/mx27.h>
#include <mach/devices-common.h> #include <mach/devices-common.h>
extern const struct imx_fec_data imx27_fec_data __initconst;
#define imx27_add_fec(pdata) \
imx_add_fec(&imx27_fec_data, pdata)
extern const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst; extern const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst;
#define imx27_add_imx_i2c(id, pdata) \ #define imx27_add_imx_i2c(id, pdata) \
imx_add_imx_i2c(&imx27_imx_i2c_data[id], pdata) imx_add_imx_i2c(&imx27_imx_i2c_data[id], pdata)
......
...@@ -314,27 +314,6 @@ struct platform_device mxc_fb_device = { ...@@ -314,27 +314,6 @@ struct platform_device mxc_fb_device = {
}, },
}; };
#ifdef CONFIG_MACH_MX27
static struct resource mxc_fec_resources[] = {
{
.start = MX27_FEC_BASE_ADDR,
.end = MX27_FEC_BASE_ADDR + SZ_4K - 1,
.flags = IORESOURCE_MEM,
}, {
.start = MX27_INT_FEC,
.end = MX27_INT_FEC,
.flags = IORESOURCE_IRQ,
},
};
struct platform_device mxc_fec_device = {
.name = "fec",
.id = 0,
.num_resources = ARRAY_SIZE(mxc_fec_resources),
.resource = mxc_fec_resources,
};
#endif
static struct resource mxc_pwm_resources[] = { static struct resource mxc_pwm_resources[] = {
{ {
.start = MX2x_PWM_BASE_ADDR, .start = MX2x_PWM_BASE_ADDR,
......
...@@ -16,7 +16,6 @@ extern struct platform_device mxc_gpt5; ...@@ -16,7 +16,6 @@ extern struct platform_device mxc_gpt5;
extern struct platform_device mxc_wdt; extern struct platform_device mxc_wdt;
extern struct platform_device mxc_w1_master_device; extern struct platform_device mxc_w1_master_device;
extern struct platform_device mxc_fb_device; extern struct platform_device mxc_fb_device;
extern struct platform_device mxc_fec_device;
extern struct platform_device mxc_pwm_device; extern struct platform_device mxc_pwm_device;
extern struct platform_device mxc_sdhc_device0; extern struct platform_device mxc_sdhc_device0;
extern struct platform_device mxc_sdhc_device1; extern struct platform_device mxc_sdhc_device1;
......
...@@ -157,7 +157,6 @@ cpuimx27_nand_board_info __initconst = { ...@@ -157,7 +157,6 @@ cpuimx27_nand_board_info __initconst = {
static struct platform_device *platform_devices[] __initdata = { static struct platform_device *platform_devices[] __initdata = {
&eukrea_cpuimx27_nor_mtd_device, &eukrea_cpuimx27_nor_mtd_device,
&mxc_fec_device,
&mxc_wdt, &mxc_wdt,
&mxc_w1_master_device, &mxc_w1_master_device,
}; };
...@@ -261,6 +260,7 @@ static void __init eukrea_cpuimx27_init(void) ...@@ -261,6 +260,7 @@ static void __init eukrea_cpuimx27_init(void)
imx27_add_imx_i2c(1, &cpuimx27_i2c1_data); imx27_add_imx_i2c(1, &cpuimx27_i2c1_data);
imx27_add_fec(NULL);
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
#if defined(CONFIG_MACH_EUKREA_CPUIMX27_USESDHC2) #if defined(CONFIG_MACH_EUKREA_CPUIMX27_USESDHC2)
......
...@@ -185,7 +185,6 @@ static struct platform_device visstrim_m10_nor_mtd_device = { ...@@ -185,7 +185,6 @@ static struct platform_device visstrim_m10_nor_mtd_device = {
static struct platform_device *platform_devices[] __initdata = { static struct platform_device *platform_devices[] __initdata = {
&visstrim_gpio_keys_device, &visstrim_gpio_keys_device,
&visstrim_m10_nor_mtd_device, &visstrim_m10_nor_mtd_device,
&mxc_fec_device,
}; };
/* Visstrim_M10 uses UART0 as console */ /* Visstrim_M10 uses UART0 as console */
...@@ -240,6 +239,7 @@ static void __init visstrim_m10_board_init(void) ...@@ -240,6 +239,7 @@ static void __init visstrim_m10_board_init(void)
imx27_add_imx_i2c(1, &visstrim_m10_i2c_data); imx27_add_imx_i2c(1, &visstrim_m10_i2c_data);
mxc_register_device(&mxc_sdhc_device0, &visstrim_m10_sdhc_pdata); mxc_register_device(&mxc_sdhc_device0, &visstrim_m10_sdhc_pdata);
mxc_register_device(&mxc_otg_host, &visstrim_m10_usbotg_pdata); mxc_register_device(&mxc_otg_host, &visstrim_m10_usbotg_pdata);
imx27_add_fec(NULL);
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
} }
......
...@@ -58,16 +58,12 @@ static const struct imxuart_platform_data uart_pdata __initconst = { ...@@ -58,16 +58,12 @@ static const struct imxuart_platform_data uart_pdata __initconst = {
.flags = IMXUART_HAVE_RTSCTS, .flags = IMXUART_HAVE_RTSCTS,
}; };
static struct platform_device *platform_devices[] __initdata = {
&mxc_fec_device,
};
static void __init mx27lite_init(void) static void __init mx27lite_init(void)
{ {
mxc_gpio_setup_multiple_pins(mx27lite_pins, ARRAY_SIZE(mx27lite_pins), mxc_gpio_setup_multiple_pins(mx27lite_pins, ARRAY_SIZE(mx27lite_pins),
"imx27lite"); "imx27lite");
imx27_add_imx_uart0(&uart_pdata); imx27_add_imx_uart0(&uart_pdata);
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); imx27_add_fec(NULL);
} }
static void __init mx27lite_timer_init(void) static void __init mx27lite_timer_init(void)
......
...@@ -64,10 +64,6 @@ static const struct imxuart_platform_data uart_pdata __initconst = { ...@@ -64,10 +64,6 @@ static const struct imxuart_platform_data uart_pdata __initconst = {
.flags = IMXUART_HAVE_RTSCTS, .flags = IMXUART_HAVE_RTSCTS,
}; };
static struct platform_device *platform_devices[] __initdata = {
&mxc_fec_device,
};
/* /*
* Matrix keyboard * Matrix keyboard
*/ */
...@@ -94,7 +90,7 @@ static void __init mx27pdk_init(void) ...@@ -94,7 +90,7 @@ static void __init mx27pdk_init(void)
mxc_gpio_setup_multiple_pins(mx27pdk_pins, ARRAY_SIZE(mx27pdk_pins), mxc_gpio_setup_multiple_pins(mx27pdk_pins, ARRAY_SIZE(mx27pdk_pins),
"mx27pdk"); "mx27pdk");
imx27_add_imx_uart0(&uart_pdata); imx27_add_imx_uart0(&uart_pdata);
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); imx27_add_fec(NULL);
mxc_register_device(&imx_kpp_device, &mx27_3ds_keymap_data); mxc_register_device(&imx_kpp_device, &mx27_3ds_keymap_data);
} }
......
...@@ -284,7 +284,6 @@ static struct imxmmc_platform_data sdhc2_pdata = { ...@@ -284,7 +284,6 @@ static struct imxmmc_platform_data sdhc2_pdata = {
static struct platform_device *platform_devices[] __initdata = { static struct platform_device *platform_devices[] __initdata = {
&mx27ads_nor_mtd_device, &mx27ads_nor_mtd_device,
&mxc_fec_device,
&mxc_w1_master_device, &mxc_w1_master_device,
}; };
...@@ -313,6 +312,7 @@ static void __init mx27ads_board_init(void) ...@@ -313,6 +312,7 @@ static void __init mx27ads_board_init(void)
mxc_register_device(&mxc_sdhc_device0, &sdhc1_pdata); mxc_register_device(&mxc_sdhc_device0, &sdhc1_pdata);
mxc_register_device(&mxc_sdhc_device1, &sdhc2_pdata); mxc_register_device(&mxc_sdhc_device1, &sdhc2_pdata);
imx27_add_fec(NULL);
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
} }
......
...@@ -231,10 +231,6 @@ static struct imxmmc_platform_data sdhc1_pdata = { ...@@ -231,10 +231,6 @@ static struct imxmmc_platform_data sdhc1_pdata = {
.exit = mxt_td60_sdhc1_exit, .exit = mxt_td60_sdhc1_exit,
}; };
static struct platform_device *platform_devices[] __initdata = {
&mxc_fec_device,
};
static const struct imxuart_platform_data uart_pdata __initconst = { static const struct imxuart_platform_data uart_pdata __initconst = {
.flags = IMXUART_HAVE_RTSCTS, .flags = IMXUART_HAVE_RTSCTS,
}; };
...@@ -259,8 +255,7 @@ static void __init mxt_td60_board_init(void) ...@@ -259,8 +255,7 @@ static void __init mxt_td60_board_init(void)
imx27_add_imx_i2c(1, &mxt_td60_i2c1_data); imx27_add_imx_i2c(1, &mxt_td60_i2c1_data);
mxc_register_device(&mxc_fb_device, &mxt_td60_fb_data); mxc_register_device(&mxc_fb_device, &mxt_td60_fb_data);
mxc_register_device(&mxc_sdhc_device0, &sdhc1_pdata); mxc_register_device(&mxc_sdhc_device0, &sdhc1_pdata);
imx27_add_fec(NULL);
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
} }
static void __init mxt_td60_timer_init(void) static void __init mxt_td60_timer_init(void)
......
...@@ -173,7 +173,6 @@ pca100_nand_board_info __initconst = { ...@@ -173,7 +173,6 @@ pca100_nand_board_info __initconst = {
static struct platform_device *platform_devices[] __initdata = { static struct platform_device *platform_devices[] __initdata = {
&mxc_w1_master_device, &mxc_w1_master_device,
&mxc_fec_device,
&mxc_wdt, &mxc_wdt,
}; };
...@@ -433,6 +432,7 @@ static void __init pca100_init(void) ...@@ -433,6 +432,7 @@ static void __init pca100_init(void)
mxc_register_device(&mxc_fb_device, &pca100_fb_data); mxc_register_device(&mxc_fb_device, &pca100_fb_data);
imx27_add_fec(NULL);
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
} }
......
...@@ -173,7 +173,6 @@ pcm038_nand_board_info __initconst = { ...@@ -173,7 +173,6 @@ pcm038_nand_board_info __initconst = {
static struct platform_device *platform_devices[] __initdata = { static struct platform_device *platform_devices[] __initdata = {
&pcm038_nor_mtd_device, &pcm038_nor_mtd_device,
&mxc_w1_master_device, &mxc_w1_master_device,
&mxc_fec_device,
&pcm038_sram_mtd_device, &pcm038_sram_mtd_device,
&mxc_wdt, &mxc_wdt,
}; };
...@@ -325,6 +324,7 @@ static void __init pcm038_init(void) ...@@ -325,6 +324,7 @@ static void __init pcm038_init(void)
mxc_register_device(&mxc_usbh2, &usbh2_pdata); mxc_register_device(&mxc_usbh2, &usbh2_pdata);
imx27_add_fec(NULL);
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
#ifdef CONFIG_MACH_PCM970_BASEBOARD #ifdef CONFIG_MACH_PCM970_BASEBOARD
......
...@@ -9,6 +9,10 @@ ...@@ -9,6 +9,10 @@
#include <mach/mx25.h> #include <mach/mx25.h>
#include <mach/devices-common.h> #include <mach/devices-common.h>
extern const struct imx_fec_data imx25_fec_data __initconst;
#define imx25_add_fec(pdata) \
imx_add_fec(&imx25_fec_data, pdata)
#define imx25_add_flexcan0(pdata) \ #define imx25_add_flexcan0(pdata) \
imx_add_flexcan(0, MX25_CAN1_BASE_ADDR, SZ_16K, MX25_INT_CAN1, pdata) imx_add_flexcan(0, MX25_CAN1_BASE_ADDR, SZ_16K, MX25_INT_CAN1, pdata)
#define imx25_add_flexcan1(pdata) \ #define imx25_add_flexcan1(pdata) \
......
...@@ -208,26 +208,6 @@ int __init imx25_register_gpios(void) ...@@ -208,26 +208,6 @@ int __init imx25_register_gpios(void)
return mxc_gpio_init(imx_gpio_ports, ARRAY_SIZE(imx_gpio_ports)); 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,
};
static struct resource mx25_rtc_resources[] = { static struct resource mx25_rtc_resources[] = {
{ {
.start = MX25_DRYICE_BASE_ADDR, .start = MX25_DRYICE_BASE_ADDR,
......
...@@ -6,7 +6,6 @@ extern struct platform_device mxc_pwm_device1; ...@@ -6,7 +6,6 @@ extern struct platform_device mxc_pwm_device1;
extern struct platform_device mxc_pwm_device2; extern struct platform_device mxc_pwm_device2;
extern struct platform_device mxc_pwm_device3; extern struct platform_device mxc_pwm_device3;
extern struct platform_device mxc_keypad_device; extern struct platform_device mxc_keypad_device;
extern struct platform_device mx25_fec_device;
extern struct platform_device mx25_rtc_device; extern struct platform_device mx25_rtc_device;
extern struct platform_device mx25_fb_device; extern struct platform_device mx25_fb_device;
extern struct platform_device mxc_wdt; extern struct platform_device mxc_wdt;
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/fec.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/usb/otg.h> #include <linux/usb/otg.h>
#include <linux/usb/ulpi.h> #include <linux/usb/ulpi.h>
...@@ -67,7 +66,7 @@ static struct pad_desc eukrea_cpuimx25_pads[] = { ...@@ -67,7 +66,7 @@ static struct pad_desc eukrea_cpuimx25_pads[] = {
MX25_PAD_I2C1_DAT__I2C1_DAT, MX25_PAD_I2C1_DAT__I2C1_DAT,
}; };
static struct fec_platform_data mx25_fec_pdata = { static const struct fec_platform_data mx25_fec_pdata __initconst = {
.phy = PHY_INTERFACE_MODE_RMII, .phy = PHY_INTERFACE_MODE_RMII,
}; };
...@@ -129,7 +128,7 @@ static void __init eukrea_cpuimx25_init(void) ...@@ -129,7 +128,7 @@ static void __init eukrea_cpuimx25_init(void)
imx25_add_imx_uart0(&uart_pdata); imx25_add_imx_uart0(&uart_pdata);
imx25_add_mxc_nand(&eukrea_cpuimx25_nand_board_info); imx25_add_mxc_nand(&eukrea_cpuimx25_nand_board_info);
mxc_register_device(&mx25_rtc_device, NULL); mxc_register_device(&mx25_rtc_device, NULL);
mxc_register_device(&mx25_fec_device, &mx25_fec_pdata); imx25_add_fec(&mx25_fec_pdata);
i2c_register_board_info(0, eukrea_cpuimx25_i2c_devices, i2c_register_board_info(0, eukrea_cpuimx25_i2c_devices,
ARRAY_SIZE(eukrea_cpuimx25_i2c_devices)); ARRAY_SIZE(eukrea_cpuimx25_i2c_devices));
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/fec.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/input/matrix_keypad.h> #include <linux/input/matrix_keypad.h>
...@@ -99,7 +98,7 @@ static struct pad_desc mx25pdk_pads[] = { ...@@ -99,7 +98,7 @@ static struct pad_desc mx25pdk_pads[] = {
MX25_PAD_KPP_COL3__KPP_COL3, MX25_PAD_KPP_COL3__KPP_COL3,
}; };
static struct fec_platform_data mx25_fec_pdata = { static const struct fec_platform_data mx25_fec_pdata __initconst = {
.phy = PHY_INTERFACE_MODE_RMII, .phy = PHY_INTERFACE_MODE_RMII,
}; };
...@@ -192,7 +191,7 @@ static void __init mx25pdk_init(void) ...@@ -192,7 +191,7 @@ static void __init mx25pdk_init(void)
mxc_register_device(&mxc_wdt, NULL); mxc_register_device(&mxc_wdt, NULL);
mx25pdk_fec_reset(); mx25pdk_fec_reset();
mxc_register_device(&mx25_fec_device, &mx25_fec_pdata); imx25_add_fec(&mx25_fec_pdata);
mxc_register_device(&mx25_kpp_device, &mx25pdk_keymap_data); mxc_register_device(&mx25_kpp_device, &mx25pdk_keymap_data);
} }
......
...@@ -9,6 +9,10 @@ ...@@ -9,6 +9,10 @@
#include <mach/mx35.h> #include <mach/mx35.h>
#include <mach/devices-common.h> #include <mach/devices-common.h>
extern const struct imx_fec_data imx35_fec_data __initconst;
#define imx35_add_fec(pdata) \
imx_add_fec(&imx35_fec_data, pdata)
#define imx35_add_flexcan0(pdata) \ #define imx35_add_flexcan0(pdata) \
imx_add_flexcan(0, MX35_CAN1_BASE_ADDR, SZ_16K, MX35_INT_CAN1, pdata) imx_add_flexcan(0, MX35_CAN1_BASE_ADDR, SZ_16K, MX35_INT_CAN1, pdata)
#define imx35_add_flexcan1(pdata) \ #define imx35_add_flexcan1(pdata) \
......
...@@ -281,27 +281,6 @@ struct platform_device mxc_usbh2 = { ...@@ -281,27 +281,6 @@ struct platform_device mxc_usbh2 = {
.num_resources = ARRAY_SIZE(mxc_usbh2_resources), .num_resources = ARRAY_SIZE(mxc_usbh2_resources),
}; };
#if defined(CONFIG_ARCH_MX35)
static struct resource mxc_fec_resources[] = {
{
.start = MXC_FEC_BASE_ADDR,
.end = MXC_FEC_BASE_ADDR + 0xfff,
.flags = IORESOURCE_MEM,
}, {
.start = MXC_INT_FEC,
.end = MXC_INT_FEC,
.flags = IORESOURCE_IRQ,
},
};
struct platform_device mxc_fec_device = {
.name = "fec",
.id = 0,
.num_resources = ARRAY_SIZE(mxc_fec_resources),
.resource = mxc_fec_resources,
};
#endif
static struct resource imx_wdt_resources[] = { static struct resource imx_wdt_resources[] = {
{ {
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
......
...@@ -2,7 +2,6 @@ extern struct platform_device mxc_w1_master_device; ...@@ -2,7 +2,6 @@ extern struct platform_device mxc_w1_master_device;
extern struct platform_device mx3_ipu; extern struct platform_device mx3_ipu;
extern struct platform_device mx3_fb; extern struct platform_device mx3_fb;
extern struct platform_device mx3_camera; extern struct platform_device mx3_camera;
extern struct platform_device mxc_fec_device;
extern struct platform_device mxcsdhc_device0; extern struct platform_device mxcsdhc_device0;
extern struct platform_device mxcsdhc_device1; extern struct platform_device mxcsdhc_device1;
extern struct platform_device mxc_otg_udc_device; extern struct platform_device mxc_otg_udc_device;
......
...@@ -76,7 +76,6 @@ static struct i2c_board_info eukrea_cpuimx35_i2c_devices[] = { ...@@ -76,7 +76,6 @@ static struct i2c_board_info eukrea_cpuimx35_i2c_devices[] = {
}; };
static struct platform_device *devices[] __initdata = { static struct platform_device *devices[] __initdata = {
&mxc_fec_device,
&imx_wdt_device0, &imx_wdt_device0,
}; };
...@@ -158,6 +157,7 @@ static void __init mxc_board_init(void) ...@@ -158,6 +157,7 @@ static void __init mxc_board_init(void)
mxc_iomux_v3_setup_multiple_pads(eukrea_cpuimx35_pads, mxc_iomux_v3_setup_multiple_pads(eukrea_cpuimx35_pads,
ARRAY_SIZE(eukrea_cpuimx35_pads)); ARRAY_SIZE(eukrea_cpuimx35_pads));
imx35_add_fec(NULL);
platform_add_devices(devices, ARRAY_SIZE(devices)); platform_add_devices(devices, ARRAY_SIZE(devices));
imx35_add_imx_uart0(&uart_pdata); imx35_add_imx_uart0(&uart_pdata);
......
...@@ -74,7 +74,6 @@ static const struct mxc_nand_platform_data mx35pdk_nand_board_info __initconst = ...@@ -74,7 +74,6 @@ static const struct mxc_nand_platform_data mx35pdk_nand_board_info __initconst =
}; };
static struct platform_device *devices[] __initdata = { static struct platform_device *devices[] __initdata = {
&mxc_fec_device,
&mx35pdk_flash, &mx35pdk_flash,
}; };
...@@ -131,6 +130,7 @@ static void __init mxc_board_init(void) ...@@ -131,6 +130,7 @@ static void __init mxc_board_init(void)
{ {
mxc_iomux_v3_setup_multiple_pads(mx35pdk_pads, ARRAY_SIZE(mx35pdk_pads)); mxc_iomux_v3_setup_multiple_pads(mx35pdk_pads, ARRAY_SIZE(mx35pdk_pads));
imx35_add_fec(NULL);
platform_add_devices(devices, ARRAY_SIZE(devices)); platform_add_devices(devices, ARRAY_SIZE(devices));
imx35_add_imx_uart0(&uart_pdata); imx35_add_imx_uart0(&uart_pdata);
......
...@@ -140,7 +140,6 @@ static struct i2c_board_info pcm043_i2c_devices[] = { ...@@ -140,7 +140,6 @@ static struct i2c_board_info pcm043_i2c_devices[] = {
static struct platform_device *devices[] __initdata = { static struct platform_device *devices[] __initdata = {
&pcm043_flash, &pcm043_flash,
&mxc_fec_device,
&imx_wdt_device0, &imx_wdt_device0,
}; };
...@@ -363,6 +362,7 @@ static void __init mxc_board_init(void) ...@@ -363,6 +362,7 @@ static void __init mxc_board_init(void)
MXC_AUDMUX_V2_PTCR_TCLKDIR, /* clock is output */ MXC_AUDMUX_V2_PTCR_TCLKDIR, /* clock is output */
MXC_AUDMUX_V2_PDCR_RXDSEL(3)); MXC_AUDMUX_V2_PDCR_RXDSEL(3));
imx35_add_fec(NULL);
platform_add_devices(devices, ARRAY_SIZE(devices)); platform_add_devices(devices, ARRAY_SIZE(devices));
imx35_add_imx_uart0(&uart_pdata); imx35_add_imx_uart0(&uart_pdata);
......
...@@ -108,7 +108,6 @@ static struct platform_device serial_device = { ...@@ -108,7 +108,6 @@ static struct platform_device serial_device = {
#endif #endif
static struct platform_device *devices[] __initdata = { static struct platform_device *devices[] __initdata = {
&mxc_fec_device,
#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE) #if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
&serial_device, &serial_device,
#endif #endif
...@@ -253,6 +252,7 @@ static void __init eukrea_cpuimx51_init(void) ...@@ -253,6 +252,7 @@ static void __init eukrea_cpuimx51_init(void)
gpio_direction_input(CPUIMX51_QUARTD_GPIO); gpio_direction_input(CPUIMX51_QUARTD_GPIO);
gpio_free(CPUIMX51_QUARTD_GPIO); gpio_free(CPUIMX51_QUARTD_GPIO);
imx51_add_fec(NULL);
platform_add_devices(devices, ARRAY_SIZE(devices)); platform_add_devices(devices, ARRAY_SIZE(devices));
imx51_add_imx_i2c(1, &eukrea_cpuimx51_i2c_data); imx51_add_imx_i2c(1, &eukrea_cpuimx51_i2c_data);
......
...@@ -46,10 +46,6 @@ ...@@ -46,10 +46,6 @@
#define MX51_USB_PLL_DIV_19_2_MHZ 0x01 #define MX51_USB_PLL_DIV_19_2_MHZ 0x01
#define MX51_USB_PLL_DIV_24_MHZ 0x02 #define MX51_USB_PLL_DIV_24_MHZ 0x02
static struct platform_device *devices[] __initdata = {
&mxc_fec_device,
};
static struct pad_desc mx51babbage_pads[] = { static struct pad_desc mx51babbage_pads[] = {
/* UART1 */ /* UART1 */
MX51_PAD_UART1_RXD__UART1_RXD, MX51_PAD_UART1_RXD__UART1_RXD,
...@@ -290,7 +286,7 @@ static void __init mxc_board_init(void) ...@@ -290,7 +286,7 @@ static void __init mxc_board_init(void)
ARRAY_SIZE(mx51babbage_pads)); ARRAY_SIZE(mx51babbage_pads));
mxc_init_imx_uart(); mxc_init_imx_uart();
babbage_fec_reset(); babbage_fec_reset();
platform_add_devices(devices, ARRAY_SIZE(devices)); imx51_add_fec(NULL);
imx51_add_imx_i2c(0, &babbage_i2c_data); imx51_add_imx_i2c(0, &babbage_i2c_data);
imx51_add_imx_i2c(1, &babbage_i2c_data); imx51_add_imx_i2c(1, &babbage_i2c_data);
......
...@@ -9,6 +9,10 @@ ...@@ -9,6 +9,10 @@
#include <mach/mx51.h> #include <mach/mx51.h>
#include <mach/devices-common.h> #include <mach/devices-common.h>
extern const struct imx_fec_data imx51_fec_data __initconst;
#define imx51_add_fec(pdata) \
imx_add_fec(&imx51_fec_data, pdata)
extern const struct imx_imx_i2c_data imx51_imx_i2c_data[] __initconst; extern const struct imx_imx_i2c_data imx51_imx_i2c_data[] __initconst;
#define imx51_add_imx_i2c(id, pdata) \ #define imx51_add_imx_i2c(id, pdata) \
imx_add_imx_i2c(&imx51_imx_i2c_data[id], pdata) imx_add_imx_i2c(&imx51_imx_i2c_data[id], pdata)
......
...@@ -17,25 +17,6 @@ ...@@ -17,25 +17,6 @@
#include <mach/imx-uart.h> #include <mach/imx-uart.h>
#include <mach/irqs.h> #include <mach/irqs.h>
static struct resource mxc_fec_resources[] = {
{
.start = MX51_MXC_FEC_BASE_ADDR,
.end = MX51_MXC_FEC_BASE_ADDR + 0xfff,
.flags = IORESOURCE_MEM,
}, {
.start = MX51_MXC_INT_FEC,
.end = MX51_MXC_INT_FEC,
.flags = IORESOURCE_IRQ,
},
};
struct platform_device mxc_fec_device = {
.name = "fec",
.id = 0,
.num_resources = ARRAY_SIZE(mxc_fec_resources),
.resource = mxc_fec_resources,
};
static struct resource mxc_hsi2c_resources[] = { static struct resource mxc_hsi2c_resources[] = {
{ {
.start = MX51_HSI2C_DMA_BASE_ADDR, .start = MX51_HSI2C_DMA_BASE_ADDR,
......
extern struct platform_device mxc_fec_device;
extern struct platform_device mxc_usbdr_host_device; extern struct platform_device mxc_usbdr_host_device;
extern struct platform_device mxc_usbh1_device; extern struct platform_device mxc_usbh1_device;
extern struct platform_device mxc_usbdr_udc_device; extern struct platform_device mxc_usbdr_udc_device;
......
config IMX_HAVE_PLATFORM_ESDHC config IMX_HAVE_PLATFORM_ESDHC
bool bool
config IMX_HAVE_PLATFORM_FEC
bool
default y if ARCH_MX25 || SOC_IMX27 || ARCH_MX35 || ARCH_MX51
config IMX_HAVE_PLATFORM_FLEXCAN config IMX_HAVE_PLATFORM_FLEXCAN
select HAVE_CAN_FLEXCAN select HAVE_CAN_FLEXCAN
bool bool
......
obj-$(CONFIG_IMX_HAVE_PLATFORM_ESDHC) += platform-esdhc.o obj-$(CONFIG_IMX_HAVE_PLATFORM_ESDHC) += platform-esdhc.o
obj-$(CONFIG_IMX_HAVE_PLATFORM_FEC) += platform-fec.o
obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o
obj-y += platform-imx-dma.o obj-y += platform-imx-dma.o
obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_I2C) += platform-imx-i2c.o obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_I2C) += platform-imx-i2c.o
......
/*
* Copyright (C) 2010 Pengutronix
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
*/
#include <asm/sizes.h>
#include <mach/hardware.h>
#include <mach/devices-common.h>
#define imx_fec_data_entry_single(soc) \
{ \
.iobase = soc ## _FEC_BASE_ADDR, \
.irq = soc ## _INT_FEC, \
}
#ifdef CONFIG_ARCH_MX25
const struct imx_fec_data imx25_fec_data __initconst =
imx_fec_data_entry_single(MX25);
#endif /* ifdef CONFIG_ARCH_MX25 */
#ifdef CONFIG_SOC_IMX27
const struct imx_fec_data imx27_fec_data __initconst =
imx_fec_data_entry_single(MX27);
#endif /* ifdef CONFIG_SOC_IMX27 */
#ifdef CONFIG_ARCH_MX35
const struct imx_fec_data imx35_fec_data __initconst =
imx_fec_data_entry_single(MX35);
#endif
#ifdef CONFIG_ARCH_MX51
const struct imx_fec_data imx51_fec_data __initconst =
imx_fec_data_entry_single(MX51);
#endif
struct platform_device *__init imx_add_fec(
const struct imx_fec_data *data,
const struct fec_platform_data *pdata)
{
struct resource res[] = {
{
.start = data->iobase,
.end = data->iobase + SZ_4K,
.flags = IORESOURCE_MEM,
}, {
.start = data->irq,
.end = data->irq,
.flags = IORESOURCE_IRQ,
},
};
return imx_add_platform_device("fec", 0 /* -1? */,
res, ARRAY_SIZE(res),
pdata, sizeof(*pdata));
}
...@@ -14,6 +14,15 @@ struct platform_device *imx_add_platform_device(const char *name, int id, ...@@ -14,6 +14,15 @@ struct platform_device *imx_add_platform_device(const char *name, int id,
const struct resource *res, unsigned int num_resources, const struct resource *res, unsigned int num_resources,
const void *data, size_t size_data); const void *data, size_t size_data);
#include <linux/fec.h>
struct imx_fec_data {
resource_size_t iobase;
resource_size_t irq;
};
struct platform_device *__init imx_add_fec(
const struct imx_fec_data *data,
const struct fec_platform_data *pdata);
#include <linux/can/platform/flexcan.h> #include <linux/can/platform/flexcan.h>
struct platform_device *__init imx_add_flexcan(int id, struct platform_device *__init imx_add_flexcan(int id,
resource_size_t iobase, resource_size_t iosize, resource_size_t iobase, resource_size_t iosize,
......
...@@ -140,7 +140,7 @@ ...@@ -140,7 +140,7 @@
#define MX51_ATA_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xe0000) #define MX51_ATA_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xe0000)
#define MX51_SIM_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xe4000) #define MX51_SIM_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xe4000)
#define MX51_SSI3BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xe8000) #define MX51_SSI3BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xe8000)
#define MX51_MXC_FEC_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xec000) #define MX51_FEC_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xec000)
#define MX51_TVE_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xf0000) #define MX51_TVE_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xf0000)
#define MX51_VPU_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xf4000) #define MX51_VPU_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xf4000)
#define MX51_SAHARA_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xf8000) #define MX51_SAHARA_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xf8000)
...@@ -366,7 +366,7 @@ ...@@ -366,7 +366,7 @@
#define MX51_MXC_INT_GPU2_IRQ 84 #define MX51_MXC_INT_GPU2_IRQ 84
#define MX51_MXC_INT_GPU2_BUSY 85 #define MX51_MXC_INT_GPU2_BUSY 85
#define MX51_MXC_INT_RESV86 86 #define MX51_MXC_INT_RESV86 86
#define MX51_MXC_INT_FEC 87 #define MX51_INT_FEC 87
#define MX51_MXC_INT_OWIRE 88 #define MX51_MXC_INT_OWIRE 88
#define MX51_MXC_INT_CTI1_TG2 89 #define MX51_MXC_INT_CTI1_TG2 89
#define MX51_MXC_INT_SJC 90 #define MX51_MXC_INT_SJC 90
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment