aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/boards/board-ap325rxa.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/boards/board-ap325rxa.c')
-rw-r--r--arch/sh/boards/board-ap325rxa.c64
1 files changed, 58 insertions, 6 deletions
diff --git a/arch/sh/boards/board-ap325rxa.c b/arch/sh/boards/board-ap325rxa.c
index 7c7874e6ac36..8881a643ac32 100644
--- a/arch/sh/boards/board-ap325rxa.c
+++ b/arch/sh/boards/board-ap325rxa.c
@@ -15,6 +15,7 @@
15#include <linux/interrupt.h> 15#include <linux/interrupt.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/mtd/physmap.h> 17#include <linux/mtd/physmap.h>
18#include <linux/mtd/sh_flctl.h>
18#include <linux/delay.h> 19#include <linux/delay.h>
19#include <linux/i2c.h> 20#include <linux/i2c.h>
20#include <linux/smc911x.h> 21#include <linux/smc911x.h>
@@ -108,10 +109,45 @@ static struct platform_device ap325rxa_nor_flash_device = {
108 }, 109 },
109}; 110};
110 111
112static struct mtd_partition nand_partition_info[] = {
113 {
114 .name = "nand_data",
115 .offset = 0,
116 .size = MTDPART_SIZ_FULL,
117 },
118};
119
120static struct resource nand_flash_resources[] = {
121 [0] = {
122 .start = 0xa4530000,
123 .end = 0xa45300ff,
124 .flags = IORESOURCE_MEM,
125 }
126};
127
128static struct sh_flctl_platform_data nand_flash_data = {
129 .parts = nand_partition_info,
130 .nr_parts = ARRAY_SIZE(nand_partition_info),
131 .flcmncr_val = FCKSEL_E | TYPESEL_SET | NANWF_E,
132 .has_hwecc = 1,
133};
134
135static struct platform_device nand_flash_device = {
136 .name = "sh_flctl",
137 .resource = nand_flash_resources,
138 .num_resources = ARRAY_SIZE(nand_flash_resources),
139 .dev = {
140 .platform_data = &nand_flash_data,
141 },
142};
143
111#define FPGA_LCDREG 0xB4100180 144#define FPGA_LCDREG 0xB4100180
112#define FPGA_BKLREG 0xB4100212 145#define FPGA_BKLREG 0xB4100212
113#define FPGA_LCDREG_VAL 0x0018 146#define FPGA_LCDREG_VAL 0x0018
114#define PORT_MSELCRB 0xA4050182 147#define PORT_MSELCRB 0xA4050182
148#define PORT_HIZCRC 0xA405015C
149#define PORT_DRVCRA 0xA405018A
150#define PORT_DRVCRB 0xA405018C
115 151
116static void ap320_wvga_power_on(void *board_data) 152static void ap320_wvga_power_on(void *board_data)
117{ 153{
@@ -282,6 +318,7 @@ static struct platform_device *ap325rxa_devices[] __initdata = {
282#ifdef CONFIG_I2C 318#ifdef CONFIG_I2C
283 &camera_device, 319 &camera_device,
284#endif 320#endif
321 &nand_flash_device,
285}; 322};
286 323
287static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = { 324static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = {
@@ -364,21 +401,36 @@ static int __init ap325rxa_devices_setup(void)
364 401
365 ctrl_outw(ctrl_inw(PORT_MSELCRB) & ~0x0001, PORT_MSELCRB); 402 ctrl_outw(ctrl_inw(PORT_MSELCRB) & ~0x0001, PORT_MSELCRB);
366 403
404 /* FLCTL */
405 gpio_request(GPIO_FN_FCE, NULL);
406 gpio_request(GPIO_FN_NAF7, NULL);
407 gpio_request(GPIO_FN_NAF6, NULL);
408 gpio_request(GPIO_FN_NAF5, NULL);
409 gpio_request(GPIO_FN_NAF4, NULL);
410 gpio_request(GPIO_FN_NAF3, NULL);
411 gpio_request(GPIO_FN_NAF2, NULL);
412 gpio_request(GPIO_FN_NAF1, NULL);
413 gpio_request(GPIO_FN_NAF0, NULL);
414 gpio_request(GPIO_FN_FCDE, NULL);
415 gpio_request(GPIO_FN_FOE, NULL);
416 gpio_request(GPIO_FN_FSC, NULL);
417 gpio_request(GPIO_FN_FWE, NULL);
418 gpio_request(GPIO_FN_FRB, NULL);
419
420 ctrl_outw(0, PORT_HIZCRC);
421 ctrl_outw(0xFFFF, PORT_DRVCRA);
422 ctrl_outw(0xFFFF, PORT_DRVCRB);
423
367 platform_resource_setup_memory(&ceu_device, "ceu", 4 << 20); 424 platform_resource_setup_memory(&ceu_device, "ceu", 4 << 20);
368 425
369 i2c_register_board_info(0, ap325rxa_i2c_devices, 426 i2c_register_board_info(0, ap325rxa_i2c_devices,
370 ARRAY_SIZE(ap325rxa_i2c_devices)); 427 ARRAY_SIZE(ap325rxa_i2c_devices));
371 428
372 return platform_add_devices(ap325rxa_devices, 429 return platform_add_devices(ap325rxa_devices,
373 ARRAY_SIZE(ap325rxa_devices)); 430 ARRAY_SIZE(ap325rxa_devices));
374} 431}
375device_initcall(ap325rxa_devices_setup); 432device_initcall(ap325rxa_devices_setup);
376 433
377static void __init ap325rxa_setup(char **cmdline_p)
378{
379}
380
381static struct sh_machine_vector mv_ap325rxa __initmv = { 434static struct sh_machine_vector mv_ap325rxa __initmv = {
382 .mv_name = "AP-325RXA", 435 .mv_name = "AP-325RXA",
383 .mv_setup = ap325rxa_setup,
384}; 436};