Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / mtd / nand / omap2.c
index 7df303a..ad07d39 100644 (file)
 
 #define        DRIVER_NAME     "omap2-nand"
 
-/* size (4 KiB) for IO mapping */
-#define        NAND_IO_SIZE    SZ_4K
-
 #define        NAND_WP_OFF     0
 #define NAND_WP_BIT    0x00000010
-#define WR_RD_PIN_MONITORING   0x00600000
 
 #define        GPMC_BUF_FULL   0x00000001
 #define        GPMC_BUF_EMPTY  0x00000000
@@ -885,8 +881,6 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
        struct omap_nand_info           *info;
        struct omap_nand_platform_data  *pdata;
        int                             err;
-       unsigned long                   val;
-
 
        pdata = pdev->dev.platform_data;
        if (pdata == NULL) {
@@ -908,28 +902,14 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
        info->gpmc_cs           = pdata->cs;
        info->gpmc_baseaddr     = pdata->gpmc_baseaddr;
        info->gpmc_cs_baseaddr  = pdata->gpmc_cs_baseaddr;
+       info->phys_base         = pdata->phys_base;
 
        info->mtd.priv          = &info->nand;
        info->mtd.name          = dev_name(&pdev->dev);
        info->mtd.owner         = THIS_MODULE;
 
-       err = gpmc_cs_request(info->gpmc_cs, NAND_IO_SIZE, &info->phys_base);
-       if (err < 0) {
-               dev_err(&pdev->dev, "Cannot request GPMC CS\n");
-               goto out_free_info;
-       }
-
-       /* Enable RD PIN Monitoring Reg */
-       if (pdata->dev_ready) {
-               val  = gpmc_cs_read_reg(info->gpmc_cs, GPMC_CS_CONFIG1);
-               val |= WR_RD_PIN_MONITORING;
-               gpmc_cs_write_reg(info->gpmc_cs, GPMC_CS_CONFIG1, val);
-       }
-
-       val  = gpmc_cs_read_reg(info->gpmc_cs, GPMC_CS_CONFIG7);
-       val &= ~(0xf << 8);
-       val |=  (0xc & 0xf) << 8;
-       gpmc_cs_write_reg(info->gpmc_cs, GPMC_CS_CONFIG7, val);
+       info->nand.options      |= pdata->devsize ? NAND_BUSWIDTH_16 : 0;
+       info->nand.options      |= NAND_SKIP_BBTSCAN;
 
        /* NAND write protect off */
        omap_nand_wp(&info->mtd, NAND_WP_OFF);
@@ -937,7 +917,7 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
        if (!request_mem_region(info->phys_base, NAND_IO_SIZE,
                                pdev->dev.driver->name)) {
                err = -EBUSY;
-               goto out_free_cs;
+               goto out_free_info;
        }
 
        info->nand.IO_ADDR_R = ioremap(info->phys_base, NAND_IO_SIZE);
@@ -966,11 +946,6 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
                info->nand.chip_delay = 50;
        }
 
-       info->nand.options  |= NAND_SKIP_BBTSCAN;
-       if ((gpmc_cs_read_reg(info->gpmc_cs, GPMC_CS_CONFIG1) & 0x3000)
-                                                               == 0x1000)
-               info->nand.options  |= NAND_BUSWIDTH_16;
-
        if (use_prefetch) {
                /* copy the virtual address of nand base for fifo access */
                info->nand_pref_fifo_add = info->nand.IO_ADDR_R;
@@ -1046,8 +1021,6 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
 
 out_release_mem_region:
        release_mem_region(info->phys_base, NAND_IO_SIZE);
-out_free_cs:
-       gpmc_cs_free(info->gpmc_cs);
 out_free_info:
        kfree(info);