aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-clps711x
diff options
context:
space:
mode:
authorAlexander Shiyan <shc_work@mail.ru>2012-11-17 08:57:17 -0500
committerOlof Johansson <olof@lixom.net>2012-11-21 12:57:43 -0500
commit90383e0ac2ae3df283f2b56997040f71f6d1df08 (patch)
treef4d74f00d18f40f120238cb7a762c676e07c6fe1 /arch/arm/mach-clps711x
parent49e67de364ea7b2dd69066c95990e686d4de6154 (diff)
ARM: clps711x: autcpu12: Special driver for handling NAND memory is removed
This patch provide migration to using "gpio-nand" and "basic-mmio-gpio" drivers instead of using special driver for handling NAND memory. Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch/arm/mach-clps711x')
-rw-r--r--arch/arm/mach-clps711x/autcpu12.c98
-rw-r--r--arch/arm/mach-clps711x/include/mach/autcpu12.h10
2 files changed, 98 insertions, 10 deletions
diff --git a/arch/arm/mach-clps711x/autcpu12.c b/arch/arm/mach-clps711x/autcpu12.c
index 3de19554d800..3fbf43f72589 100644
--- a/arch/arm/mach-clps711x/autcpu12.c
+++ b/arch/arm/mach-clps711x/autcpu12.c
@@ -23,9 +23,13 @@
23#include <linux/string.h> 23#include <linux/string.h>
24#include <linux/mm.h> 24#include <linux/mm.h>
25#include <linux/io.h> 25#include <linux/io.h>
26#include <linux/gpio.h>
26#include <linux/ioport.h> 27#include <linux/ioport.h>
27#include <linux/interrupt.h> 28#include <linux/interrupt.h>
29#include <linux/mtd/partitions.h>
30#include <linux/mtd/nand-gpio.h>
28#include <linux/platform_device.h> 31#include <linux/platform_device.h>
32#include <linux/basic_mmio_gpio.h>
29 33
30#include <mach/hardware.h> 34#include <mach/hardware.h>
31#include <asm/sizes.h> 35#include <asm/sizes.h>
@@ -43,6 +47,15 @@
43#define AUTCPU12_CS8900_BASE (CS2_PHYS_BASE + 0x300) 47#define AUTCPU12_CS8900_BASE (CS2_PHYS_BASE + 0x300)
44#define AUTCPU12_CS8900_IRQ (IRQ_EINT3) 48#define AUTCPU12_CS8900_IRQ (IRQ_EINT3)
45 49
50#define AUTCPU12_SMC_BASE (CS1_PHYS_BASE + 0x06000000)
51#define AUTCPU12_SMC_SEL_BASE (AUTCPU12_SMC_BASE + 0x10)
52
53#define AUTCPU12_MMGPIO_BASE (CLPS711X_NR_GPIO)
54#define AUTCPU12_SMC_NCE (AUTCPU12_MMGPIO_BASE + 0) /* Bit 0 */
55#define AUTCPU12_SMC_RDY CLPS711X_GPIO(1, 2)
56#define AUTCPU12_SMC_ALE CLPS711X_GPIO(1, 3)
57#define AUTCPU12_SMC_CLE CLPS711X_GPIO(1, 3)
58
46static struct resource autcpu12_cs8900_resource[] __initdata = { 59static struct resource autcpu12_cs8900_resource[] __initdata = {
47 DEFINE_RES_MEM(AUTCPU12_CS8900_BASE, SZ_1K), 60 DEFINE_RES_MEM(AUTCPU12_CS8900_BASE, SZ_1K),
48 DEFINE_RES_IRQ(AUTCPU12_CS8900_IRQ), 61 DEFINE_RES_IRQ(AUTCPU12_CS8900_IRQ),
@@ -59,14 +72,98 @@ static struct platform_device autcpu12_nvram_pdev __initdata = {
59 .num_resources = ARRAY_SIZE(autcpu12_nvram_resource), 72 .num_resources = ARRAY_SIZE(autcpu12_nvram_resource),
60}; 73};
61 74
75static struct resource autcpu12_nand_resource[] __initdata = {
76 DEFINE_RES_MEM(AUTCPU12_SMC_BASE, SZ_16),
77};
78
79static struct mtd_partition autcpu12_nand_parts[] __initdata = {
80 {
81 .name = "Flash partition 1",
82 .offset = 0,
83 .size = SZ_8M,
84 },
85 {
86 .name = "Flash partition 2",
87 .offset = MTDPART_OFS_APPEND,
88 .size = MTDPART_SIZ_FULL,
89 },
90};
91
92static void __init autcpu12_adjust_parts(struct gpio_nand_platdata *pdata,
93 size_t sz)
94{
95 switch (sz) {
96 case SZ_16M:
97 case SZ_32M:
98 break;
99 case SZ_64M:
100 case SZ_128M:
101 pdata->parts[0].size = SZ_16M;
102 break;
103 default:
104 pr_warn("Unsupported SmartMedia device size %u\n", sz);
105 break;
106 }
107}
108
109static struct gpio_nand_platdata autcpu12_nand_pdata __initdata = {
110 .gpio_rdy = AUTCPU12_SMC_RDY,
111 .gpio_nce = AUTCPU12_SMC_NCE,
112 .gpio_ale = AUTCPU12_SMC_ALE,
113 .gpio_cle = AUTCPU12_SMC_CLE,
114 .gpio_nwp = -1,
115 .chip_delay = 20,
116 .parts = autcpu12_nand_parts,
117 .num_parts = ARRAY_SIZE(autcpu12_nand_parts),
118 .adjust_parts = autcpu12_adjust_parts,
119};
120
121static struct platform_device autcpu12_nand_pdev __initdata = {
122 .name = "gpio-nand",
123 .id = -1,
124 .resource = autcpu12_nand_resource,
125 .num_resources = ARRAY_SIZE(autcpu12_nand_resource),
126 .dev = {
127 .platform_data = &autcpu12_nand_pdata,
128 },
129};
130
131static struct resource autcpu12_mmgpio_resource[] __initdata = {
132 DEFINE_RES_MEM_NAMED(AUTCPU12_SMC_SEL_BASE, SZ_1, "dat"),
133};
134
135static struct bgpio_pdata autcpu12_mmgpio_pdata __initdata = {
136 .base = AUTCPU12_MMGPIO_BASE,
137 .ngpio = 8,
138};
139
140static struct platform_device autcpu12_mmgpio_pdev __initdata = {
141 .name = "basic-mmio-gpio",
142 .id = -1,
143 .resource = autcpu12_mmgpio_resource,
144 .num_resources = ARRAY_SIZE(autcpu12_mmgpio_resource),
145 .dev = {
146 .platform_data = &autcpu12_mmgpio_pdata,
147 },
148};
149
62static void __init autcpu12_init(void) 150static void __init autcpu12_init(void)
63{ 151{
64 platform_device_register_simple("video-clps711x", 0, NULL, 0); 152 platform_device_register_simple("video-clps711x", 0, NULL, 0);
65 platform_device_register_simple("cs89x0", 0, autcpu12_cs8900_resource, 153 platform_device_register_simple("cs89x0", 0, autcpu12_cs8900_resource,
66 ARRAY_SIZE(autcpu12_cs8900_resource)); 154 ARRAY_SIZE(autcpu12_cs8900_resource));
155 platform_device_register(&autcpu12_mmgpio_pdev);
67 platform_device_register(&autcpu12_nvram_pdev); 156 platform_device_register(&autcpu12_nvram_pdev);
68} 157}
69 158
159static void __init autcpu12_init_late(void)
160{
161 if (IS_ENABLED(MTD_NAND_GPIO) && IS_ENABLED(GPIO_GENERIC_PLATFORM)) {
162 /* We are need both drivers to handle NAND */
163 platform_device_register(&autcpu12_nand_pdev);
164 }
165}
166
70MACHINE_START(AUTCPU12, "autronix autcpu12") 167MACHINE_START(AUTCPU12, "autronix autcpu12")
71 /* Maintainer: Thomas Gleixner */ 168 /* Maintainer: Thomas Gleixner */
72 .atag_offset = 0x20000, 169 .atag_offset = 0x20000,
@@ -75,6 +172,7 @@ MACHINE_START(AUTCPU12, "autronix autcpu12")
75 .init_irq = clps711x_init_irq, 172 .init_irq = clps711x_init_irq,
76 .timer = &clps711x_timer, 173 .timer = &clps711x_timer,
77 .init_machine = autcpu12_init, 174 .init_machine = autcpu12_init,
175 .init_late = autcpu12_init_late,
78 .handle_irq = clps711x_handle_irq, 176 .handle_irq = clps711x_handle_irq,
79 .restart = clps711x_restart, 177 .restart = clps711x_restart,
80MACHINE_END 178MACHINE_END
diff --git a/arch/arm/mach-clps711x/include/mach/autcpu12.h b/arch/arm/mach-clps711x/include/mach/autcpu12.h
index b077abd8a475..0452f5f3f034 100644
--- a/arch/arm/mach-clps711x/include/mach/autcpu12.h
+++ b/arch/arm/mach-clps711x/include/mach/autcpu12.h
@@ -40,8 +40,6 @@
40 40
41#define AUTCPU12_PHYS_CSAUX1 CS1_PHYS_BASE +0x04000000 /* physical */ 41#define AUTCPU12_PHYS_CSAUX1 CS1_PHYS_BASE +0x04000000 /* physical */
42 42
43#define AUTCPU12_PHYS_SMC CS1_PHYS_BASE +0x06000000 /* physical */
44
45#define AUTCPU12_PHYS_CAN CS1_PHYS_BASE +0x08000000 /* physical */ 43#define AUTCPU12_PHYS_CAN CS1_PHYS_BASE +0x08000000 /* physical */
46 44
47#define AUTCPU12_PHYS_TOUCH CS1_PHYS_BASE +0x0A000000 /* physical */ 45#define AUTCPU12_PHYS_TOUCH CS1_PHYS_BASE +0x0A000000 /* physical */
@@ -50,14 +48,6 @@
50 48
51#define AUTCPU12_PHYS_LPT CS1_PHYS_BASE +0x0E000000 /* physical */ 49#define AUTCPU12_PHYS_LPT CS1_PHYS_BASE +0x0E000000 /* physical */
52 50
53/*
54* defines for smartmedia card access
55*/
56#define AUTCPU12_SMC_RDY (1<<2)
57#define AUTCPU12_SMC_ALE (1<<3)
58#define AUTCPU12_SMC_CLE (1<<4)
59#define AUTCPU12_SMC_PORT_OFFSET PBDR
60#define AUTCPU12_SMC_SELECT_OFFSET 0x10
61/* 51/*
62* defines for lcd contrast 52* defines for lcd contrast
63*/ 53*/