Merge branch 'master' into for-next
[safe/jmp/linux-2.6] / arch / arm / mach-at91 / board-usb-a9263.c
index 1285706..b6a3480 100644 (file)
@@ -29,7 +29,6 @@
 #include <linux/gpio_keys.h>
 #include <linux/input.h>
 
-#include <asm/hardware.h>
 #include <asm/setup.h>
 #include <asm/mach-types.h>
 #include <asm/irq.h>
 #include <asm/mach/map.h>
 #include <asm/mach/irq.h>
 
-#include <asm/arch/board.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/at91_shdwc.h>
+#include <mach/hardware.h>
+#include <mach/board.h>
+#include <mach/gpio.h>
+#include <mach/at91sam9_smc.h>
+#include <mach/at91_shdwc.h>
 
+#include "sam9_smc.h"
 #include "generic.h"
 
 
@@ -50,7 +52,7 @@ static void __init ek_map_io(void)
        /* Initialize processor: 12.00 MHz crystal */
        at91sam9263_initialize(12000000);
 
-       /* DGBU on ttyS0. (Rx & Tx only) */
+       /* DBGU on ttyS0. (Rx & Tx only) */
        at91_register_uart(0, 0, 0);
 
        /* set serial console to ttyS0 (ie, DBGU) */
@@ -106,18 +108,18 @@ static struct at91_eth_data __initdata ek_macb_data = {
 static struct mtd_partition __initdata ek_nand_partition[] = {
        {
                .name   = "Linux Kernel",
-               .offset = 0x00000000,
-               .size   = 16 * 1024 * 1024,
+               .offset = 0,
+               .size   = SZ_16M,
        },
        {
                .name   = "Root FS",
-               .offset = 0x01000000,
-               .size   = 120 * 1024 * 1024,
+               .offset = MTDPART_OFS_NXTBLK,
+               .size   = 120 * SZ_1M,
        },
        {
                .name   = "FS",
-               .offset = 0x08800000,
-               .size   = 120 * 1024 * 1024,
+               .offset = MTDPART_OFS_NXTBLK,
+               .size   = 120 * SZ_1M,
        }
 };
 
@@ -134,13 +136,35 @@ static struct atmel_nand_data __initdata ek_nand_data = {
        .rdy_pin        = AT91_PIN_PA22,
        .enable_pin     = AT91_PIN_PD15,
        .partition_info = nand_partitions,
-#if defined(CONFIG_MTD_NAND_AT91_BUSWIDTH_16)
-       .bus_width_16   = 1,
-#else
-       .bus_width_16   = 0,
-#endif
 };
 
+static struct sam9_smc_config __initdata ek_nand_smc_config = {
+       .ncs_read_setup         = 0,
+       .nrd_setup              = 1,
+       .ncs_write_setup        = 0,
+       .nwe_setup              = 1,
+
+       .ncs_read_pulse         = 3,
+       .nrd_pulse              = 3,
+       .ncs_write_pulse        = 3,
+       .nwe_pulse              = 3,
+
+       .read_cycle             = 5,
+       .write_cycle            = 5,
+
+       .mode                   = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_DBW_8,
+       .tdf_cycles             = 2,
+};
+
+static void __init ek_add_device_nand(void)
+{
+       /* configure chip-select 3 (NAND) */
+       sam9_smc_configure(3, &ek_nand_smc_config);
+
+       at91_add_device_nand(&ek_nand_data);
+}
+
+
 /*
  * GPIO Buttons
  */
@@ -206,7 +230,7 @@ static void __init ek_board_init(void)
        /* Ethernet */
        at91_add_device_eth(&ek_macb_data);
        /* NAND */
-       at91_add_device_nand(&ek_nand_data);
+       ek_add_device_nand();
        /* I2C */
        at91_add_device_i2c(NULL, 0);
        /* Push Buttons */