Date:2010-07-30 04:20:25 (13 years 4 months ago)
Author:Maarten ter Huurne
Commit:63b52d84f3263d4d11644dce7d1596b444026463
Message:MTD: NAND: jz4740: Request and configure GPIO pins for NAND chip select.

Chip select for bank 1 is already configured on boot, but the other banks only started working after this change.
Files: drivers/mtd/nand/jz4740_nand.c (3 diffs)

Change Details

drivers/mtd/nand/jz4740_nand.c
483483
484484    ctrl = 0;
485485    for (num_banks = 0; num_banks < 4 ; ++num_banks) {
486        int gpio;
487        char name[9];
488
486489        bank = pdata->banks[num_banks];
487490        if (bank == 0)
488491            break;
489492        if (bank > 4) {
493            dev_err(&pdev->dev, "Non-existing bank: %d\n", bank);
490494            ret = -EINVAL;
491495            goto err_gpio_free;
492496        }
493497
498        sprintf(name, "NAND CS%d", bank);
499        gpio = JZ_GPIO_MEM_CS0 + bank - 1;
500        ret = gpio_request(gpio, name);
501        if (ret) {
502            dev_err(&pdev->dev,
503                "Failed to request %s gpio %d: %d\n",
504                name, gpio, ret);
505            goto err_gpio_free;
506        }
507        jz_gpio_set_function(gpio, JZ_GPIO_FUNC_MEM_CS0);
508
494509        ctrl |= JZ_NAND_CTRL_ENABLE_CHIP(bank - 1);
495510    }
496511
...... 
555570err_gpio_free:
556571    platform_set_drvdata(pdev, NULL);
557572    gpio_free(pdata->busy_gpio);
573    while (num_banks--) {
574        bank = pdata->banks[num_banks];
575        gpio_free(JZ_GPIO_MEM_CS0 + bank - 1);
576    }
558577err_iounmap_mmio:
559578    iounmap(nand->base);
560579err_free:
...... 
574593    writel(0, nand->base + JZ_REG_NAND_CTRL);
575594
576595    for (i = 0; i < 4; ++i)
577        if (nand->bank_base[i] != 0)
596        if (nand->bank_base[i] != 0) {
578597            jz_nand_iounmap_resource(nand->bank_mem[i],
579598                         nand->bank_base[i]);
599            gpio_free(JZ_GPIO_MEM_CS0 + i);
600        }
580601    gpio_free(pdata->busy_gpio);
581602
582603    jz_nand_iounmap_resource(nand->mem, nand->base);

Archive Download the corresponding diff file



interactive