Merge tag 'cfi/for-5.8' of gitolite.kernel.org:pub/scm/linux/kernel/git/mtd/linux...
authorRichard Weinberger <richard@nod.at>
Wed, 3 Jun 2020 07:21:52 +0000 (09:21 +0200)
committerRichard Weinberger <richard@nod.at>
Wed, 3 Jun 2020 07:21:52 +0000 (09:21 +0200)
CFI changes:

* Support the absence of protection registers for Intel CFI flashes
* Replace zero-length array with flexible-arrays

drivers/mtd/chips/cfi_cmdset_0001.c
include/linux/mtd/cfi.h
include/linux/mtd/qinfo.h

index 142c0f9..42001c4 100644 (file)
@@ -420,8 +420,9 @@ read_pri_intelext(struct map_info *map, __u16 adr)
                extra_size = 0;
 
                /* Protection Register info */
-               extra_size += (extp->NumProtectionFields - 1) *
-                             sizeof(struct cfi_intelext_otpinfo);
+               if (extp->NumProtectionFields)
+                       extra_size += (extp->NumProtectionFields - 1) *
+                                     sizeof(struct cfi_intelext_otpinfo);
        }
 
        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'
            && extp->FeatureSupport & (1 << 9)) {
+               int offs = 0;
                struct cfi_private *newcfi;
                struct flchip *chip;
                struct flchip_shared *shared;
-               int offs, numregions, numparts, partshift, numvirtchips, i, j;
+               int numregions, numparts, partshift, numvirtchips, i, j;
 
                /* Protection Register info */
-               offs = (extp->NumProtectionFields - 1) *
-                      sizeof(struct cfi_intelext_otpinfo);
+               if (extp->NumProtectionFields)
+                       offs = (extp->NumProtectionFields - 1) *
+                              sizeof(struct cfi_intelext_otpinfo);
 
                /* Burst Read info */
                offs += extp->extra[offs+1]+2;
index c98a211..fd1ecb8 100644 (file)
@@ -138,7 +138,7 @@ struct cfi_ident {
        uint16_t InterfaceDesc;
        uint16_t MaxBufWriteSize;
        uint8_t  NumEraseRegions;
-       uint32_t EraseRegionInfo[0]; /* Not host ordered */
+       uint32_t EraseRegionInfo[]; /* Not host ordered */
 } __packed;
 
 /* Extended Query Structure for both PRI and ALT */
@@ -165,7 +165,7 @@ struct cfi_pri_intelext {
        uint16_t ProtRegAddr;
        uint8_t  FactProtRegSize;
        uint8_t  UserProtRegSize;
-       uint8_t  extra[0];
+       uint8_t  extra[];
 } __packed;
 
 struct cfi_intelext_otpinfo {
@@ -286,7 +286,7 @@ struct cfi_private {
        map_word sector_erase_cmd;
        unsigned long chipshift; /* Because they're of the same type */
        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,
index df5b9fd..2e3f437 100644 (file)
@@ -24,7 +24,7 @@ struct lpddr_private {
        struct qinfo_chip *qinfo;
        int numchips;
        unsigned long chipshift;
-       struct flchip chips[0];
+       struct flchip chips[];
 };
 
 /* qinfo_query_info structure contains request information for