CFI changes:
* Support the absence of protection registers for Intel CFI flashes * Replace zero-length array with flexible-arrays -----BEGIN PGP SIGNATURE----- iQFEBAABCAAuFiEEyRC2zAhGcGjrhiNExEYeRXyRFuMFAl7M2JMQHHZpZ25lc2hy QHRpLmNvbQAKCRDERh5FfJEW4wPtB/9yqMGejoFX8QLvtFLBCH9XZhuxRSXH3qCO JXaqIrGSPBA3zb3po8z7dN5PoKUFQStXL8KrP1XcYKnZCE5l5p1qeSeYh3pBBmuN eWuNCTwEco6h0SSjEw/AWjJ47MhV9Cp+vg7KmozLR1zrg+DJvdeURA0cj/DI5gNL 9DQDlxS7+WuejFAwYEKajDvrYZRqUF/XrfUtPxg9mrXsrwf0iPSra0zZ9ia+qZbE sYw9EXngnf3NmSfrDQ0Y+g3ViqxTZBhrFN8MDnn/L3rCCv7llGxm0aC4mPWN5BRx pinhIfFWZMgMSdvRG9sLN4qOT1SDRGG5HYpR67LGsObAFLnMGWS+ =jReG -----END PGP SIGNATURE----- Merge tag 'cfi/for-5.8' of gitolite.kernel.org:pub/scm/linux/kernel/git/mtd/linux into mtd/next CFI changes: * Support the absence of protection registers for Intel CFI flashes * Replace zero-length array with flexible-arrays
This commit is contained in:
commit
48e9912e03
|
@ -420,8 +420,9 @@ read_pri_intelext(struct map_info *map, __u16 adr)
|
||||||
extra_size = 0;
|
extra_size = 0;
|
||||||
|
|
||||||
/* Protection Register info */
|
/* Protection Register info */
|
||||||
extra_size += (extp->NumProtectionFields - 1) *
|
if (extp->NumProtectionFields)
|
||||||
sizeof(struct cfi_intelext_otpinfo);
|
extra_size += (extp->NumProtectionFields - 1) *
|
||||||
|
sizeof(struct cfi_intelext_otpinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extp->MinorVersion >= '1') {
|
if (extp->MinorVersion >= '1') {
|
||||||
|
@ -695,14 +696,16 @@ static int cfi_intelext_partition_fixup(struct mtd_info *mtd,
|
||||||
*/
|
*/
|
||||||
if (extp && extp->MajorVersion == '1' && extp->MinorVersion >= '3'
|
if (extp && extp->MajorVersion == '1' && extp->MinorVersion >= '3'
|
||||||
&& extp->FeatureSupport & (1 << 9)) {
|
&& extp->FeatureSupport & (1 << 9)) {
|
||||||
|
int offs = 0;
|
||||||
struct cfi_private *newcfi;
|
struct cfi_private *newcfi;
|
||||||
struct flchip *chip;
|
struct flchip *chip;
|
||||||
struct flchip_shared *shared;
|
struct flchip_shared *shared;
|
||||||
int offs, numregions, numparts, partshift, numvirtchips, i, j;
|
int numregions, numparts, partshift, numvirtchips, i, j;
|
||||||
|
|
||||||
/* Protection Register info */
|
/* Protection Register info */
|
||||||
offs = (extp->NumProtectionFields - 1) *
|
if (extp->NumProtectionFields)
|
||||||
sizeof(struct cfi_intelext_otpinfo);
|
offs = (extp->NumProtectionFields - 1) *
|
||||||
|
sizeof(struct cfi_intelext_otpinfo);
|
||||||
|
|
||||||
/* Burst Read info */
|
/* Burst Read info */
|
||||||
offs += extp->extra[offs+1]+2;
|
offs += extp->extra[offs+1]+2;
|
||||||
|
|
|
@ -138,7 +138,7 @@ struct cfi_ident {
|
||||||
uint16_t InterfaceDesc;
|
uint16_t InterfaceDesc;
|
||||||
uint16_t MaxBufWriteSize;
|
uint16_t MaxBufWriteSize;
|
||||||
uint8_t NumEraseRegions;
|
uint8_t NumEraseRegions;
|
||||||
uint32_t EraseRegionInfo[0]; /* Not host ordered */
|
uint32_t EraseRegionInfo[]; /* Not host ordered */
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
/* Extended Query Structure for both PRI and ALT */
|
/* Extended Query Structure for both PRI and ALT */
|
||||||
|
@ -165,7 +165,7 @@ struct cfi_pri_intelext {
|
||||||
uint16_t ProtRegAddr;
|
uint16_t ProtRegAddr;
|
||||||
uint8_t FactProtRegSize;
|
uint8_t FactProtRegSize;
|
||||||
uint8_t UserProtRegSize;
|
uint8_t UserProtRegSize;
|
||||||
uint8_t extra[0];
|
uint8_t extra[];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
struct cfi_intelext_otpinfo {
|
struct cfi_intelext_otpinfo {
|
||||||
|
@ -286,7 +286,7 @@ struct cfi_private {
|
||||||
map_word sector_erase_cmd;
|
map_word sector_erase_cmd;
|
||||||
unsigned long chipshift; /* Because they're of the same type */
|
unsigned long chipshift; /* Because they're of the same type */
|
||||||
const char *im_name; /* inter_module name for cmdset_setup */
|
const char *im_name; /* inter_module name for cmdset_setup */
|
||||||
struct flchip chips[0]; /* per-chip data structure for each chip */
|
struct flchip chips[]; /* per-chip data structure for each chip */
|
||||||
};
|
};
|
||||||
|
|
||||||
uint32_t cfi_build_cmd_addr(uint32_t cmd_ofs,
|
uint32_t cfi_build_cmd_addr(uint32_t cmd_ofs,
|
||||||
|
|
|
@ -24,7 +24,7 @@ struct lpddr_private {
|
||||||
struct qinfo_chip *qinfo;
|
struct qinfo_chip *qinfo;
|
||||||
int numchips;
|
int numchips;
|
||||||
unsigned long chipshift;
|
unsigned long chipshift;
|
||||||
struct flchip chips[0];
|
struct flchip chips[];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* qinfo_query_info structure contains request information for
|
/* qinfo_query_info structure contains request information for
|
||||||
|
|
Loading…
Reference in New Issue