From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============0715561546452902570==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: [intel-linux-intel-lts:5.4/yocto 1/13] drivers/mtd/spi-nor/core.c:3383:34: sparse: sparse: cast to restricted __le32 Date: Thu, 10 Jun 2021 22:38:03 +0800 Message-ID: <202106102200.s3Y24laY-lkp@intel.com> List-Id: --===============0715561546452902570== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Boris, First bad commit (maybe !=3D root cause): tree: https://github.com/intel/linux-intel-lts.git 5.4/yocto head: 756623e2f190038a96e780f5f07990a065ebf2b9 commit: 4541b62447f9a65c9192597304d5f6cd11664386 [1/13] mtd: spi-nor: Prepa= re core / manufacturer code split config: powerpc-randconfig-s031-20210610 (attached as .config) compiler: powerpc-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/= make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-341-g8af24329-dirty # https://github.com/intel/linux-intel-lts/commit/4541b62447f9a65c9= 192597304d5f6cd11664386 git remote add intel-linux-intel-lts https://github.com/intel/linux= -intel-lts.git git fetch --no-tags intel-linux-intel-lts 5.4/yocto git checkout 4541b62447f9a65c9192597304d5f6cd11664386 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dgcc-9.3.0 make.cross = C=3D1 CF=3D'-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=3D1 ARCH=3Dpowerpc = If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> drivers/mtd/spi-nor/core.c:3383:34: sparse: sparse: cast to restricted _= _le32 >> drivers/mtd/spi-nor/core.c:3383:34: sparse: sparse: cast to restricted _= _le32 >> drivers/mtd/spi-nor/core.c:3383:34: sparse: sparse: cast to restricted _= _le32 >> drivers/mtd/spi-nor/core.c:3383:34: sparse: sparse: cast to restricted _= _le32 >> drivers/mtd/spi-nor/core.c:3383:34: sparse: sparse: cast to restricted _= _le32 >> drivers/mtd/spi-nor/core.c:3383:34: sparse: sparse: cast to restricted _= _le32 >> drivers/mtd/spi-nor/core.c:3651:38: sparse: sparse: dubious: x | !y drivers/mtd/spi-nor/core.c:3837:27: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3837:27: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3837:27: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3837:27: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3837:27: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3837:27: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3931:29: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3931:29: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3931:29: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3931:29: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3931:29: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:3931:29: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:4071:13: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:4071:13: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:4071:13: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:4071:13: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:4071:13: sparse: sparse: cast to restricted _= _le32 drivers/mtd/spi-nor/core.c:4071:13: sparse: sparse: cast to restricted _= _le32 vim +3383 drivers/mtd/spi-nor/core.c 2aaa5f7e0c07a0 drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2018-12-06 33= 24 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 25 /** f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 26 * spi_nor_parse_bfpt() - read and parse the Basic Flash Parameter Tabl= e. f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 27 * @nor: pointer to a 'struct spi_nor' f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 28 * @bfpt_header: pointer to the 'struct sfdp_parameter_header' describi= ng f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 29 * the Basic Flash Parameter Table length and version f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 30 * @params: pointer to the 'struct spi_nor_flash_parameter' to be f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 31 * filled f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 32 * f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 33 * The Basic Flash Parameter Table is the main and only mandatory table= as f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 34 * defined by the SFDP (JESD216) specification. f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 35 * It provides us with the total size (memory density) of the data arra= y and f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 36 * the number of address bytes for Fast Read, Page Program and Sector E= rase f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 37 * commands. f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 38 * For Fast READ commands, it also gives the number of mode clock cycle= s and f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 39 * wait states (regrouped in the number of dummy clock cycles) for each f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 40 * supported instruction op code. f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 41 * For Page Program, the page size is now available since JESD216 rev A= , however f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 42 * the supported instruction op codes are still not provided. f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 43 * For Sector Erase commands, this table stores the supported instructi= on op f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 44 * codes and the associated sector sizes. f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 45 * Finally, the Quad Enable Requirements (QER) are also available since= JESD216 f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 46 * rev A. The QER bits encode the manufacturer dependent procedure to be f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 47 * executed to set the Quad Enable (QE) bit in some internal register o= f the f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 48 * Quad SPI memory. Indeed the QE bit, when it exists, must be set befo= re f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 49 * sending any Quad SPI command to the memory. Actually, setting the QE= bit f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 50 * tells the memory to reassign its WP# and HOLD#/RESET# pins to functi= ons IO2 f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 51 * and IO3 hence enabling 4 (Quad) I/O lines. f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 52 * f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 53 * Return: 0 on success, -errno otherwise. f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 54 */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 55 static int spi_nor_parse_bfpt(struct spi_nor *nor, f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 56 const struct sfdp_parameter_header *bfpt_header, f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 57 struct spi_nor_flash_parameter *params) f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 58 { c46872170a54c9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2019-08-23 33= 59 struct spi_nor_erase_map *map =3D ¶ms->erase_map; 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 33= 60 struct spi_nor_erase_type *erase_type =3D map->erase_type; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 61 struct sfdp_bfpt bfpt; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 62 size_t len; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 63 int i, cmd, err; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 64 u32 addr; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 65 u16 half; 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 33= 66 u8 erase_mask; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 67 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 68 /* JESD216 Basic Flash Parameter Table length is at least 9 DWORDs. */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 69 if (bfpt_header->length < BFPT_DWORD_MAX_JESD216) f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 70 return -EINVAL; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 71 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 72 /* Read the Basic Flash Parameter Table. */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 73 len =3D min_t(size_t, sizeof(bfpt), f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 74 bfpt_header->length * sizeof(u32)); f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 75 addr =3D SFDP_PARAM_HEADER_PTP(bfpt_header); f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 76 memset(&bfpt, 0, sizeof(bfpt)); bfa4133795e5a0 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-09-06 33= 77 err =3D spi_nor_read_sfdp_dma_unsafe(nor, addr, len, &bfpt); f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 78 if (err < 0) f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 79 return err; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 80 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 81 /* Fix endianness of the BFPT DWORDs. */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 82 for (i =3D 0; i < BFPT_DWORD_MAX; i++) f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 @33= 83 bfpt.dwords[i] =3D le32_to_cpu(bfpt.dwords[i]); f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 84 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 85 /* Number of address bytes. */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 86 switch (bfpt.dwords[BFPT_DWORD(1)] & BFPT_DWORD1_ADDRESS_BYTES_MASK) { f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 87 case BFPT_DWORD1_ADDRESS_BYTES_3_ONLY: f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 88 nor->addr_width =3D 3; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 89 break; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 90 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 91 case BFPT_DWORD1_ADDRESS_BYTES_4_ONLY: f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 92 nor->addr_width =3D 4; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 93 break; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 94 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 95 default: f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 96 break; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 97 } f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 98 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 33= 99 /* Flash Memory Density (in bits). */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 00 params->size =3D bfpt.dwords[BFPT_DWORD(2)]; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 01 if (params->size & BIT(31)) { f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 02 params->size &=3D ~BIT(31); b8f3911610529b drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2017-09-12 34= 03 = b8f3911610529b drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2017-09-12 34= 04 /* b8f3911610529b drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2017-09-12 34= 05 * Prevent overflows on params->size. Anyway, a NOR of 2^64 b8f3911610529b drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2017-09-12 34= 06 * bits is unlikely to exist so this error probably means b8f3911610529b drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2017-09-12 34= 07 * the BFPT we are reading is corrupted/wrong. b8f3911610529b drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2017-09-12 34= 08 */ b8f3911610529b drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2017-09-12 34= 09 if (params->size > 63) b8f3911610529b drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2017-09-12 34= 10 return -EINVAL; b8f3911610529b drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2017-09-12 34= 11 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 12 params->size =3D 1ULL << params->size; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 13 } else { f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 14 params->size++; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 15 } f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 16 params->size >>=3D 3; /* Convert to bytes. */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 17 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 18 /* Fast Read settings. */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 19 for (i =3D 0; i < ARRAY_SIZE(sfdp_bfpt_reads); i++) { f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 20 const struct sfdp_bfpt_read *rd =3D &sfdp_bfpt_reads[i]; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 21 struct spi_nor_read_command *read; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 22 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 23 if (!(bfpt.dwords[rd->supported_dword] & rd->supported_bit)) { f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 24 params->hwcaps.mask &=3D ~rd->hwcaps; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 25 continue; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 26 } f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 27 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 28 params->hwcaps.mask |=3D rd->hwcaps; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 29 cmd =3D spi_nor_hwcaps_read2cmd(rd->hwcaps); f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 30 read =3D ¶ms->reads[cmd]; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 31 half =3D bfpt.dwords[rd->settings_dword] >> rd->settings_shift; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 32 spi_nor_set_read_settings_from_bfpt(read, half, rd->proto); f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 33 } f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 34 = 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 35 /* 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 36 * Sector Erase settings. Reinitialize the uniform erase map using the 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 37 * Erase Types defined in the bfpt table. 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 38 */ 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 39 erase_mask =3D 0; c46872170a54c9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2019-08-23 34= 40 memset(¶ms->erase_map, 0, sizeof(params->erase_map)); f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 41 for (i =3D 0; i < ARRAY_SIZE(sfdp_bfpt_erases); i++) { f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 42 const struct sfdp_bfpt_erase *er =3D &sfdp_bfpt_erases[i]; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 43 u32 erasesize; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 44 u8 opcode; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 45 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 46 half =3D bfpt.dwords[er->dword] >> er->shift; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 47 erasesize =3D half & 0xff; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 48 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 49 /* erasesize =3D=3D 0 means this Erase Type is not supported. */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 50 if (!erasesize) f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 51 continue; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 52 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 53 erasesize =3D 1U << erasesize; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 54 opcode =3D (half >> 8) & 0xff; 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 55 erase_mask |=3D BIT(i); 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 56 spi_nor_set_erase_settings_from_bfpt(&erase_type[i], erasesize, 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 57 opcode, i); f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 58 } 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 59 spi_nor_init_uniform_erase_map(map, erase_mask, params->size); 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 60 /* 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 61 * Sort all the map's Erase Types in ascending order with the smallest 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 62 * erase size being the first member in the erase_type array. 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 63 */ 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 64 sort(erase_type, SNOR_ERASE_TYPE_MAX, sizeof(erase_type[0]), 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 65 spi_nor_map_cmp_erase_type, NULL); 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 66 /* 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 67 * Sort the erase types in the uniform region in order to update the 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 68 * uniform_erase_type bitmask. The bitmask will be used later on when 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 69 * selecting the uniform erase. 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 70 */ 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 71 spi_nor_regions_sort_erase_types(map); 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 72 map->uniform_erase_type =3D map->uniform_region.offset & 5390a8df769ec9 drivers/mtd/spi-nor/spi-nor.c Tudor Ambarus 2018-09-11 34= 73 SNOR_ERASE_TYPE_MASK; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 74 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 75 /* Stop here if not JESD216 rev A or later. */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 76 if (bfpt_header->length < BFPT_DWORD_MAX) 2aaa5f7e0c07a0 drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2018-12-06 34= 77 return spi_nor_post_bfpt_fixups(nor, bfpt_header, &bfpt, 2aaa5f7e0c07a0 drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2018-12-06 34= 78 params); f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 79 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 80 /* Page size: this field specifies 'N' so the page size =3D 2^N bytes.= */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 81 params->page_size =3D bfpt.dwords[BFPT_DWORD(11)]; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 82 params->page_size &=3D BFPT_DWORD11_PAGE_SIZE_MASK; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 83 params->page_size >>=3D BFPT_DWORD11_PAGE_SIZE_SHIFT; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 84 params->page_size =3D 1U << params->page_size; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 85 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 86 /* Quad Enable Requirements. */ f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 87 switch (bfpt.dwords[BFPT_DWORD(15)] & BFPT_DWORD15_QER_MASK) { f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 88 case BFPT_DWORD15_QER_NONE: f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 89 params->quad_enable =3D NULL; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 90 break; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 91 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 92 case BFPT_DWORD15_QER_SR2_BIT1_BUGGY: f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 93 case BFPT_DWORD15_QER_SR2_BIT1_NO_RD: f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 94 params->quad_enable =3D spansion_no_read_cr_quad_enable; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 95 break; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 96 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 97 case BFPT_DWORD15_QER_SR1_BIT6: f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 98 params->quad_enable =3D macronix_quad_enable; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 34= 99 break; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 00 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 01 case BFPT_DWORD15_QER_SR2_BIT7: f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 02 params->quad_enable =3D sr2_bit7_quad_enable; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 03 break; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 04 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 05 case BFPT_DWORD15_QER_SR2_BIT1: f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 06 params->quad_enable =3D spansion_read_cr_quad_enable; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 07 break; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 08 = f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 09 default: f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 10 return -EINVAL; f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 11 } f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 12 = 2aaa5f7e0c07a0 drivers/mtd/spi-nor/spi-nor.c Boris Brezillon 2018-12-06 35= 13 return spi_nor_post_bfpt_fixups(nor, bfpt_header, &bfpt, params); f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 14 } f384b352cbf031 drivers/mtd/spi-nor/spi-nor.c Cyrille Pitchen 2017-06-26 35= 15 = :::::: The code at line 3383 was first introduced by commit :::::: f384b352cbf0310fd20c379c4710408c70e769b6 mtd: spi-nor: parse Serial = Flash Discoverable Parameters (SFDP) tables :::::: TO: Cyrille Pitchen :::::: CC: Cyrille Pitchen --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============0715561546452902570== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 2IXpFacedfxa753l8X+O/v8HOrFKZzhzAQA= --===============0715561546452902570==--