浏览代码

ARM: imx: Change the way nand devices are registered (imx21)

Make use of new mechanism to register a nand device.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Uwe Kleine-König 15 年之前
父节点
当前提交
1f8d721cd3

+ 1 - 0
arch/arm/mach-imx/Kconfig

@@ -68,6 +68,7 @@ comment "MX21 platforms:"
 
 
 config MACH_MX21ADS
 config MACH_MX21ADS
 	bool "MX21ADS platform"
 	bool "MX21ADS platform"
+	select IMX_HAVE_PLATFORM_MXC_NAND
 	help
 	help
 	  Include support for MX21ADS platform. This includes specific
 	  Include support for MX21ADS platform. This includes specific
 	  configurations for the board and its peripherals.
 	  configurations for the board and its peripherals.

+ 13 - 0
arch/arm/mach-imx/devices-imx21.h

@@ -0,0 +1,13 @@
+/*
+ * 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 <mach/mx21.h>
+#include <mach/devices-common.h>
+
+#define imx21_add_mxc_nand(pdata)	\
+	imx_add_mxc_nand_v1(MX21_NFC_BASE_ADDR, MX21_INT_NANDFC, pdata)

+ 0 - 4
arch/arm/mach-imx/devices.c

@@ -357,10 +357,6 @@ struct platform_device mxc_w1_master_device = {
 		.resource = pfx ## _nand_resources,			\
 		.resource = pfx ## _nand_resources,			\
 	}
 	}
 
 
-#ifdef CONFIG_MACH_MX21
-DEFINE_MXC_NAND_DEVICE(imx21, MX21_NFC_BASE_ADDR, MX21_INT_NANDFC);
-#endif
-
 #ifdef CONFIG_MACH_MX27
 #ifdef CONFIG_MACH_MX27
 DEFINE_MXC_NAND_DEVICE(imx27, MX27_NFC_BASE_ADDR, MX27_INT_NANDFC);
 DEFINE_MXC_NAND_DEVICE(imx27, MX27_NFC_BASE_ADDR, MX27_INT_NANDFC);
 #endif
 #endif

+ 0 - 3
arch/arm/mach-imx/devices.h

@@ -26,9 +26,6 @@ extern struct platform_device imx2x_uart_device4;
 extern struct platform_device imx2x_uart_device5;
 extern struct platform_device imx2x_uart_device5;
 #endif
 #endif
 extern struct platform_device mxc_w1_master_device;
 extern struct platform_device mxc_w1_master_device;
-#ifdef CONFIG_MACH_MX21
-extern struct platform_device imx21_nand_device;
-#endif
 #ifdef CONFIG_MACH_MX27
 #ifdef CONFIG_MACH_MX27
 extern struct platform_device imx27_nand_device;
 extern struct platform_device imx27_nand_device;
 #endif
 #endif

+ 4 - 2
arch/arm/mach-imx/mach-mx21ads.c

@@ -30,6 +30,7 @@
 #include <mach/mxc_nand.h>
 #include <mach/mxc_nand.h>
 #include <mach/mmc.h>
 #include <mach/mmc.h>
 
 
+#include "devices-imx21.h"
 #include "devices.h"
 #include "devices.h"
 
 
 /*
 /*
@@ -257,7 +258,8 @@ static struct imxmmc_platform_data mx21ads_sdhc_pdata = {
 	.exit = mx21ads_sdhc_exit,
 	.exit = mx21ads_sdhc_exit,
 };
 };
 
 
-static struct mxc_nand_platform_data mx21ads_nand_board_info = {
+static const struct mxc_nand_platform_data
+mx21ads_nand_board_info __initconst = {
 	.width = 1,
 	.width = 1,
 	.hw_ecc = 1,
 	.hw_ecc = 1,
 };
 };
@@ -298,7 +300,7 @@ static void __init mx21ads_board_init(void)
 	mxc_register_device(&imx2x_uart_device3, &uart_pdata);
 	mxc_register_device(&imx2x_uart_device3, &uart_pdata);
 	mxc_register_device(&mxc_fb_device, &mx21ads_fb_data);
 	mxc_register_device(&mxc_fb_device, &mx21ads_fb_data);
 	mxc_register_device(&mxc_sdhc_device0, &mx21ads_sdhc_pdata);
 	mxc_register_device(&mxc_sdhc_device0, &mx21ads_sdhc_pdata);
-	mxc_register_device(&imx21_nand_device, &mx21ads_nand_board_info);
+	imx21_add_mxc_nand(&mx21ads_nand_board_info);
 
 
 	platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
 	platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
 }
 }