#include <plat/mtu.h>
 #include <plat/pincfg.h>
 
-#include <mach/fsmc.h>
-
 #include "cpu-8815.h"
 
 /* Initial value for SRC control register: all timers use MXTAL/8 source */
 #define SRC_CR_INIT_MASK       0x00007fff
 #define SRC_CR_INIT_VAL                0x2aaa8000
 
+#define ALE_OFF 0x1000000
+#define CLE_OFF 0x800000
+
 /* These addresses span 16MB, so use three individual pages */
 static struct resource nhk8815_nand_resources[] = {
        {
                .start = 0x40000000,
                .end = 0x40000000 + SZ_16K - 1,
                .flags = IORESOURCE_MEM,
+       }, {
+               .name = "nand_addr",
+               .start = 0x40000000 + ALE_OFF,
+               .end = 0x40000000 +ALE_OFF + SZ_16K - 1,
+               .flags = IORESOURCE_MEM,
+       }, {
+               .name = "nand_cmd",
+               .start = 0x40000000 + CLE_OFF,
+               .end = 0x40000000 + CLE_OFF + SZ_16K - 1,
+               .flags = IORESOURCE_MEM,
        }, {
                .name  = "fsmc_regs",
                .start = NOMADIK_FSMC_BASE,
        .partitions = nhk8815_partitions,
        .nr_partitions = ARRAY_SIZE(nhk8815_partitions),
        .width = FSMC_NAND_BW8,
-       .ale_off = 0x1000000,
-       .cle_off = 0x800000,
 };
 
 static struct platform_device nhk8815_nand_device = {
        .num_resources  = ARRAY_SIZE(nhk8815_onenand_resource),
 };
 
+/* bus control reg. and bus timing reg. for CS0..CS3 */
+#define FSMC_BCR(x)    (NOMADIK_FSMC_VA + (x << 3))
+#define FSMC_BTR(x)    (NOMADIK_FSMC_VA + (x << 3) + 0x04)
+
 static void __init nhk8815_onenand_init(void)
 {
 #ifdef CONFIG_MTD_ONENAND