diff options
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/nand/r852.c | 2 | ||||
-rw-r--r-- | drivers/mtd/nand/sm_common.c | 37 | ||||
-rw-r--r-- | drivers/mtd/nand/sm_common.h | 2 |
3 files changed, 23 insertions, 18 deletions
diff --git a/drivers/mtd/nand/r852.c b/drivers/mtd/nand/r852.c index 96bfbd8e8fdb..6dfbb4713162 100644 --- a/drivers/mtd/nand/r852.c +++ b/drivers/mtd/nand/r852.c | |||
@@ -666,7 +666,7 @@ int r852_register_nand_device(struct r852_device *dev) | |||
666 | 666 | ||
667 | r852_engine_enable(dev); | 667 | r852_engine_enable(dev); |
668 | 668 | ||
669 | if (sm_register_device(dev->mtd)) | 669 | if (sm_register_device(dev->mtd, dev->sm)) |
670 | goto error2; | 670 | goto error2; |
671 | 671 | ||
672 | if (device_create_file(&dev->mtd->dev, &dev_attr_media_type)) | 672 | if (device_create_file(&dev->mtd->dev, &dev_attr_media_type)) |
diff --git a/drivers/mtd/nand/sm_common.c b/drivers/mtd/nand/sm_common.c index aae0b9acd7ae..ac80fb362e63 100644 --- a/drivers/mtd/nand/sm_common.c +++ b/drivers/mtd/nand/sm_common.c | |||
@@ -68,8 +68,6 @@ static int sm_block_markbad(struct mtd_info *mtd, loff_t ofs) | |||
68 | 68 | ||
69 | 69 | ||
70 | static struct nand_flash_dev nand_smartmedia_flash_ids[] = { | 70 | static struct nand_flash_dev nand_smartmedia_flash_ids[] = { |
71 | |||
72 | /* SmartMedia */ | ||
73 | {"SmartMedia 1MiB 5V", 0x6e, 256, 1, 0x1000, 0}, | 71 | {"SmartMedia 1MiB 5V", 0x6e, 256, 1, 0x1000, 0}, |
74 | {"SmartMedia 1MiB 3,3V", 0xe8, 256, 1, 0x1000, 0}, | 72 | {"SmartMedia 1MiB 3,3V", 0xe8, 256, 1, 0x1000, 0}, |
75 | {"SmartMedia 1MiB 3,3V", 0xec, 256, 1, 0x1000, 0}, | 73 | {"SmartMedia 1MiB 3,3V", 0xec, 256, 1, 0x1000, 0}, |
@@ -82,28 +80,34 @@ static struct nand_flash_dev nand_smartmedia_flash_ids[] = { | |||
82 | {"SmartMedia 4MiB 3,3V ROM", 0xd5, 512, 4, 0x2000, NAND_ROM}, | 80 | {"SmartMedia 4MiB 3,3V ROM", 0xd5, 512, 4, 0x2000, NAND_ROM}, |
83 | {"SmartMedia 8MiB 3,3V", 0xe6, 512, 8, 0x2000, 0}, | 81 | {"SmartMedia 8MiB 3,3V", 0xe6, 512, 8, 0x2000, 0}, |
84 | {"SmartMedia 8MiB 3,3V ROM", 0xd6, 512, 8, 0x2000, NAND_ROM}, | 82 | {"SmartMedia 8MiB 3,3V ROM", 0xd6, 512, 8, 0x2000, NAND_ROM}, |
85 | 83 | {"SmartMedia 16MiB 3,3V", 0x73, 512, 16, 0x4000, 0}, | |
86 | #define XD_TYPEM (NAND_NO_AUTOINCR | NAND_BROKEN_XD) | ||
87 | /* xD / SmartMedia */ | ||
88 | {"SmartMedia/xD 16MiB 3,3V", 0x73, 512, 16, 0x4000, 0}, | ||
89 | {"SmartMedia 16MiB 3,3V ROM", 0x57, 512, 16, 0x4000, NAND_ROM}, | 84 | {"SmartMedia 16MiB 3,3V ROM", 0x57, 512, 16, 0x4000, NAND_ROM}, |
90 | {"SmartMedia/xD 32MiB 3,3V", 0x75, 512, 32, 0x4000, 0}, | 85 | {"SmartMedia 32MiB 3,3V", 0x75, 512, 32, 0x4000, 0}, |
91 | {"SmartMedia 32MiB 3,3V ROM", 0x58, 512, 32, 0x4000, NAND_ROM}, | 86 | {"SmartMedia 32MiB 3,3V ROM", 0x58, 512, 32, 0x4000, NAND_ROM}, |
92 | {"SmartMedia/xD 64MiB 3,3V", 0x76, 512, 64, 0x4000, 0}, | 87 | {"SmartMedia 64MiB 3,3V", 0x76, 512, 64, 0x4000, 0}, |
93 | {"SmartMedia 64MiB 3,3V ROM", 0xd9, 512, 64, 0x4000, NAND_ROM}, | 88 | {"SmartMedia 64MiB 3,3V ROM", 0xd9, 512, 64, 0x4000, NAND_ROM}, |
94 | {"SmartMedia/xD 128MiB 3,3V", 0x79, 512, 128, 0x4000, 0}, | 89 | {"SmartMedia 128MiB 3,3V", 0x79, 512, 128, 0x4000, 0}, |
95 | {"SmartMedia 128MiB 3,3V ROM", 0xda, 512, 128, 0x4000, NAND_ROM}, | 90 | {"SmartMedia 128MiB 3,3V ROM", 0xda, 512, 128, 0x4000, NAND_ROM}, |
96 | {"SmartMedia/xD 256MiB 3,3V", 0x71, 512, 256, 0x4000, XD_TYPEM}, | 91 | {"SmartMedia 256MiB 3,3V", 0x71, 512, 256, 0x4000 }, |
97 | {"SmartMedia 256MiB 3,3V ROM", 0x5b, 512, 256, 0x4000, NAND_ROM}, | 92 | {"SmartMedia 256MiB 3,3V ROM", 0x5b, 512, 256, 0x4000, NAND_ROM}, |
93 | {NULL,} | ||
94 | }; | ||
98 | 95 | ||
99 | /* xD only */ | 96 | #define XD_TYPEM (NAND_NO_AUTOINCR | NAND_BROKEN_XD) |
100 | {"xD 512MiB 3,3V", 0xDC, 512, 512, 0x4000, XD_TYPEM}, | 97 | static struct nand_flash_dev nand_xd_flash_ids[] = { |
101 | {"xD 1GiB 3,3V", 0xD3, 512, 1024, 0x4000, XD_TYPEM}, | 98 | |
102 | {"xD 2GiB 3,3V", 0xD5, 512, 2048, 0x4000, XD_TYPEM}, | 99 | {"xD 16MiB 3,3V", 0x73, 512, 16, 0x4000, 0}, |
100 | {"xD 32MiB 3,3V", 0x75, 512, 32, 0x4000, 0}, | ||
101 | {"xD 64MiB 3,3V", 0x76, 512, 64, 0x4000, 0}, | ||
102 | {"xD 128MiB 3,3V", 0x79, 512, 128, 0x4000, 0}, | ||
103 | {"xD 256MiB 3,3V", 0x71, 512, 256, 0x4000, XD_TYPEM}, | ||
104 | {"xD 512MiB 3,3V", 0xdc, 512, 512, 0x4000, XD_TYPEM}, | ||
105 | {"xD 1GiB 3,3V", 0xd3, 512, 1024, 0x4000, XD_TYPEM}, | ||
106 | {"xD 2GiB 3,3V", 0xd5, 512, 2048, 0x4000, XD_TYPEM}, | ||
103 | {NULL,} | 107 | {NULL,} |
104 | }; | 108 | }; |
105 | 109 | ||
106 | int sm_register_device(struct mtd_info *mtd) | 110 | int sm_register_device(struct mtd_info *mtd, int smartmedia) |
107 | { | 111 | { |
108 | struct nand_chip *chip = (struct nand_chip *)mtd->priv; | 112 | struct nand_chip *chip = (struct nand_chip *)mtd->priv; |
109 | int ret; | 113 | int ret; |
@@ -111,7 +115,8 @@ int sm_register_device(struct mtd_info *mtd) | |||
111 | chip->options |= NAND_SKIP_BBTSCAN; | 115 | chip->options |= NAND_SKIP_BBTSCAN; |
112 | 116 | ||
113 | /* Scan for card properties */ | 117 | /* Scan for card properties */ |
114 | ret = nand_scan_ident(mtd, 1, nand_smartmedia_flash_ids); | 118 | ret = nand_scan_ident(mtd, 1, smartmedia ? |
119 | nand_smartmedia_flash_ids : nand_xd_flash_ids); | ||
115 | 120 | ||
116 | if (ret) | 121 | if (ret) |
117 | return ret; | 122 | return ret; |
diff --git a/drivers/mtd/nand/sm_common.h b/drivers/mtd/nand/sm_common.h index 18284f5fae64..00f4a83359b2 100644 --- a/drivers/mtd/nand/sm_common.h +++ b/drivers/mtd/nand/sm_common.h | |||
@@ -36,7 +36,7 @@ struct sm_oob { | |||
36 | #define SM_SMALL_OOB_SIZE 8 | 36 | #define SM_SMALL_OOB_SIZE 8 |
37 | 37 | ||
38 | 38 | ||
39 | extern int sm_register_device(struct mtd_info *mtd); | 39 | extern int sm_register_device(struct mtd_info *mtd, int smartmedia); |
40 | 40 | ||
41 | 41 | ||
42 | static inline int sm_sector_valid(struct sm_oob *oob) | 42 | static inline int sm_sector_valid(struct sm_oob *oob) |