mtd: msm_nand: Fix wrong uncorrectable error bit check

For the Nand controller on 7x30 and 7x27a, the
uncorrectable error bit in the NANDC_BUFFER_STATUS
register is changed to BIT(8) from BIT(3) (in legacy
targets) due to change in the ECC requirements. Currently,
this is handled only in dual nandc mode (default for 7x30
and 7x27a). In case, if only single nandc is used, the
uncorrectable bit check is broken and the driver wouldn't
detect any ECC errors.

Add software version info in platform data to differentiate
between the targets that have different register interface.

CRs-Fixed: 365433
Change-Id: I3c33ccb0e936e262116dd20798d56530dbae900f
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
(cherry picked from commit ec9b3250fe233e4ff96b4ad23372df5f8299fc67)

Conflicts:

	arch/arm/mach-msm/devices-9615.c
	arch/arm/mach-msm/devices-msm7x27a.c
	arch/arm/mach-msm/devices-msm7x30.c
This commit is contained in:
Sujit Reddy Thumma 2012-04-23 15:53:45 +05:30 committed by Stephen Boyd
parent 6f12ab4000
commit 6fcb181016

View file

@ -13,6 +13,11 @@
struct mtd_partition;
struct mtd_info;
enum sw_version {
VERSION_1 = 0,
VERSION_2,
};
/*
* map_name: the map probe function name
* name: flash device name (eg, as used with mtdparts=)
@ -23,6 +28,7 @@ struct mtd_info;
* mmcontrol: method called to enable or disable Sync. Burst Read in OneNAND
* parts: optional array of mtd_partitions for static partitioning
* nr_parts: number of mtd_partitions for static partitoning
* version: software register interface version
*/
struct flash_platform_data {
const char *map_name;
@ -34,6 +40,7 @@ struct flash_platform_data {
void (*mmcontrol)(struct mtd_info *mtd, int sync_read);
struct mtd_partition *parts;
unsigned int nr_parts;
enum sw_version version;
};
#endif