Loading drivers/mtd/nand/sharpsl.c +18 −4 Original line number Original line Diff line number Diff line Loading @@ -2,6 +2,7 @@ * drivers/mtd/nand/sharpsl.c * drivers/mtd/nand/sharpsl.c * * * Copyright (C) 2004 Richard Purdie * Copyright (C) 2004 Richard Purdie * Copyright (C) 2008 Dmitry Baryshkov * * * Based on Sharp's NAND driver sharp_sl.c * Based on Sharp's NAND driver sharp_sl.c * * Loading Loading @@ -52,12 +53,12 @@ struct sharpsl_nand { #define FLCLE (1 << 1) #define FLCLE (1 << 1) #define FLCE0 (1 << 0) #define FLCE0 (1 << 0) #ifdef CONFIG_MTD_PARTITIONS /* /* * Define partitions for flash device * Define partitions for flash device */ */ #define DEFAULT_NUM_PARTITIONS 3 #define DEFAULT_NUM_PARTITIONS 3 static int nr_partitions; static struct mtd_partition sharpsl_nand_default_partition_info[] = { static struct mtd_partition sharpsl_nand_default_partition_info[] = { { { .name = "System Area", .name = "System Area", Loading @@ -75,6 +76,7 @@ static struct mtd_partition sharpsl_nand_default_partition_info[] = { .size = MTDPART_SIZ_FULL, .size = MTDPART_SIZ_FULL, }, }, }; }; #endif /* /* * hardware specific access to control-lines * hardware specific access to control-lines Loading Loading @@ -151,7 +153,7 @@ static int sharpsl_nand_calculate_ecc(struct mtd_info *mtd, const u_char * dat, } } #ifdef CONFIG_MTD_PARTITIONS #ifdef CONFIG_MTD_PARTITIONS const char *part_probes[] = { "cmdlinepart", NULL }; static const char *part_probes[] = { "cmdlinepart", NULL }; #endif #endif /* /* Loading @@ -160,7 +162,10 @@ const char *part_probes[] = { "cmdlinepart", NULL }; static int __devinit sharpsl_nand_probe(struct platform_device *pdev) static int __devinit sharpsl_nand_probe(struct platform_device *pdev) { { struct nand_chip *this; struct nand_chip *this; #ifdef CONFIG_MTD_PARTITIONS struct mtd_partition *sharpsl_partition_info; struct mtd_partition *sharpsl_partition_info; int nr_partitions; #endif struct resource *r; struct resource *r; int err = 0; int err = 0; struct sharpsl_nand *sharpsl; struct sharpsl_nand *sharpsl; Loading Loading @@ -229,10 +234,11 @@ static int __devinit sharpsl_nand_probe(struct platform_device *pdev) /* Register the partitions */ /* Register the partitions */ sharpsl->mtd.name = "sharpsl-nand"; sharpsl->mtd.name = "sharpsl-nand"; #ifdef CONFIG_MTD_PARTITIONS nr_partitions = parse_mtd_partitions(&sharpsl->mtd, part_probes, &sharpsl_partition_info, 0); nr_partitions = parse_mtd_partitions(&sharpsl->mtd, part_probes, &sharpsl_partition_info, 0); if (nr_partitions <= 0) { if (nr_partitions <= 0) { nr_partitions = DEFAULT_NUM_PARTITIONS; nr_partitions = ARRAY_SIZE(sharpsl_nand_default_partition_info); sharpsl_partition_info = sharpsl_nand_default_partition_info; sharpsl_partition_info = sharpsl_nand_default_partition_info; if (machine_is_poodle()) { if (machine_is_poodle()) { sharpsl_partition_info[1].size = 22 * 1024 * 1024; sharpsl_partition_info[1].size = 22 * 1024 * 1024; Loading @@ -249,11 +255,19 @@ static int __devinit sharpsl_nand_probe(struct platform_device *pdev) } } } } add_mtd_partitions(&sharpsl->mtd, sharpsl_partition_info, nr_partitions); err = add_mtd_partitions(&sharpsl->mtd, sharpsl_partition_info, nr_partitions); #else err = add_mtd_device(&sharpsl->mtd); #endif if (err) goto err_add; /* Return happy */ /* Return happy */ return 0; return 0; err_add: nand_release(&sharpsl->mtd); err_scan: err_scan: platform_set_drvdata(pdev, NULL); platform_set_drvdata(pdev, NULL); iounmap(sharpsl->io); iounmap(sharpsl->io); Loading Loading
drivers/mtd/nand/sharpsl.c +18 −4 Original line number Original line Diff line number Diff line Loading @@ -2,6 +2,7 @@ * drivers/mtd/nand/sharpsl.c * drivers/mtd/nand/sharpsl.c * * * Copyright (C) 2004 Richard Purdie * Copyright (C) 2004 Richard Purdie * Copyright (C) 2008 Dmitry Baryshkov * * * Based on Sharp's NAND driver sharp_sl.c * Based on Sharp's NAND driver sharp_sl.c * * Loading Loading @@ -52,12 +53,12 @@ struct sharpsl_nand { #define FLCLE (1 << 1) #define FLCLE (1 << 1) #define FLCE0 (1 << 0) #define FLCE0 (1 << 0) #ifdef CONFIG_MTD_PARTITIONS /* /* * Define partitions for flash device * Define partitions for flash device */ */ #define DEFAULT_NUM_PARTITIONS 3 #define DEFAULT_NUM_PARTITIONS 3 static int nr_partitions; static struct mtd_partition sharpsl_nand_default_partition_info[] = { static struct mtd_partition sharpsl_nand_default_partition_info[] = { { { .name = "System Area", .name = "System Area", Loading @@ -75,6 +76,7 @@ static struct mtd_partition sharpsl_nand_default_partition_info[] = { .size = MTDPART_SIZ_FULL, .size = MTDPART_SIZ_FULL, }, }, }; }; #endif /* /* * hardware specific access to control-lines * hardware specific access to control-lines Loading Loading @@ -151,7 +153,7 @@ static int sharpsl_nand_calculate_ecc(struct mtd_info *mtd, const u_char * dat, } } #ifdef CONFIG_MTD_PARTITIONS #ifdef CONFIG_MTD_PARTITIONS const char *part_probes[] = { "cmdlinepart", NULL }; static const char *part_probes[] = { "cmdlinepart", NULL }; #endif #endif /* /* Loading @@ -160,7 +162,10 @@ const char *part_probes[] = { "cmdlinepart", NULL }; static int __devinit sharpsl_nand_probe(struct platform_device *pdev) static int __devinit sharpsl_nand_probe(struct platform_device *pdev) { { struct nand_chip *this; struct nand_chip *this; #ifdef CONFIG_MTD_PARTITIONS struct mtd_partition *sharpsl_partition_info; struct mtd_partition *sharpsl_partition_info; int nr_partitions; #endif struct resource *r; struct resource *r; int err = 0; int err = 0; struct sharpsl_nand *sharpsl; struct sharpsl_nand *sharpsl; Loading Loading @@ -229,10 +234,11 @@ static int __devinit sharpsl_nand_probe(struct platform_device *pdev) /* Register the partitions */ /* Register the partitions */ sharpsl->mtd.name = "sharpsl-nand"; sharpsl->mtd.name = "sharpsl-nand"; #ifdef CONFIG_MTD_PARTITIONS nr_partitions = parse_mtd_partitions(&sharpsl->mtd, part_probes, &sharpsl_partition_info, 0); nr_partitions = parse_mtd_partitions(&sharpsl->mtd, part_probes, &sharpsl_partition_info, 0); if (nr_partitions <= 0) { if (nr_partitions <= 0) { nr_partitions = DEFAULT_NUM_PARTITIONS; nr_partitions = ARRAY_SIZE(sharpsl_nand_default_partition_info); sharpsl_partition_info = sharpsl_nand_default_partition_info; sharpsl_partition_info = sharpsl_nand_default_partition_info; if (machine_is_poodle()) { if (machine_is_poodle()) { sharpsl_partition_info[1].size = 22 * 1024 * 1024; sharpsl_partition_info[1].size = 22 * 1024 * 1024; Loading @@ -249,11 +255,19 @@ static int __devinit sharpsl_nand_probe(struct platform_device *pdev) } } } } add_mtd_partitions(&sharpsl->mtd, sharpsl_partition_info, nr_partitions); err = add_mtd_partitions(&sharpsl->mtd, sharpsl_partition_info, nr_partitions); #else err = add_mtd_device(&sharpsl->mtd); #endif if (err) goto err_add; /* Return happy */ /* Return happy */ return 0; return 0; err_add: nand_release(&sharpsl->mtd); err_scan: err_scan: platform_set_drvdata(pdev, NULL); platform_set_drvdata(pdev, NULL); iounmap(sharpsl->io); iounmap(sharpsl->io); Loading