Re: [PATCH 2/2] mtd: spinand: micron: Support for all Micron SPI NAND flashes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Shivamurthy,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on mtd/nand/next]
[also build test WARNING on v5.0-rc4 next-20190204]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Shivamurthy-Shastri-sshivamurthy/Support-parameter-page-and-Redesign-Micron-SPI-NAND/20190205-012740
base:   git://git.infradead.org/linux-mtd.git nand/next
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

All warnings (new ones prefixed by >>):

>> drivers/mtd/nand/spi/micron.c:186:36: sparse: warning: incorrect type in assignment (different base types)
   drivers/mtd/nand/spi/micron.c:186:36: sparse:    expected unsigned int [assigned] pagesize
   drivers/mtd/nand/spi/micron.c:186:36: sparse:    got restricted __le32 [usertype] byte_per_page
   drivers/mtd/nand/spi/micron.c:187:35: sparse: warning: incorrect type in assignment (different base types)
   drivers/mtd/nand/spi/micron.c:187:35: sparse:    expected unsigned int [assigned] oobsize
   drivers/mtd/nand/spi/micron.c:187:35: sparse:    got restricted __le16 [usertype] spare_bytes_per_page
   drivers/mtd/nand/spi/micron.c:188:48: sparse: warning: incorrect type in assignment (different base types)
   drivers/mtd/nand/spi/micron.c:188:48: sparse:    expected unsigned int [assigned] pages_per_eraseblock
   drivers/mtd/nand/spi/micron.c:188:48: sparse:    got restricted __le32 [usertype] pages_per_block
>> drivers/mtd/nand/spi/micron.c:190:23: sparse: warning: restricted __le32 degrades to integer

sparse warnings: (new ones prefixed by >>)

   drivers/mtd/nand/spi/micron.c:186:36: sparse: warning: incorrect type in assignment (different base types)
>> drivers/mtd/nand/spi/micron.c:186:36: sparse:    expected unsigned int [assigned] pagesize
>> drivers/mtd/nand/spi/micron.c:186:36: sparse:    got restricted __le32 [usertype] byte_per_page
   drivers/mtd/nand/spi/micron.c:187:35: sparse: warning: incorrect type in assignment (different base types)
>> drivers/mtd/nand/spi/micron.c:187:35: sparse:    expected unsigned int [assigned] oobsize
>> drivers/mtd/nand/spi/micron.c:187:35: sparse:    got restricted __le16 [usertype] spare_bytes_per_page
   drivers/mtd/nand/spi/micron.c:188:48: sparse: warning: incorrect type in assignment (different base types)
>> drivers/mtd/nand/spi/micron.c:188:48: sparse:    expected unsigned int [assigned] pages_per_eraseblock
>> drivers/mtd/nand/spi/micron.c:188:48: sparse:    got restricted __le32 [usertype] pages_per_block
   drivers/mtd/nand/spi/micron.c:190:23: sparse: warning: restricted __le32 degrades to integer

vim +186 drivers/mtd/nand/spi/micron.c

   127	
   128	static int micron_spinand_detect(struct spinand_device *spinand)
   129	{
   130		struct spinand_info deviceinfo;
   131		struct micron_spinand_params *params;
   132		u8 *id = spinand->id.data;
   133		int ret, i;
   134	
   135		/*
   136		 * Micron SPI NAND read ID need a dummy byte,
   137		 * so the first byte in raw_id is dummy.
   138		 */
   139		if (id[1] != SPINAND_MFR_MICRON)
   140			return 0;
   141	
   142		params = kzalloc(sizeof(*params) * 3, GFP_KERNEL);
   143		if (!params)
   144			return -ENOMEM;
   145	
   146		ret = spinand_parameter_page_read(spinand, PARAMETER_PAGE, params,
   147						  sizeof(*params) * 3);
   148		if (ret)
   149			goto free_params;
   150	
   151		for (i = 0; i < 3; i++) {
   152			if (spinand_crc16(0x4F4E, (u8 *)&params[i], 254) ==
   153					le16_to_cpu(params->crc)) {
   154				if (i)
   155					memcpy(params, &params[i], sizeof(*params));
   156				break;
   157			}
   158		}
   159	
   160		if (i == 3) {
   161			const void *srcbufs[3] = {params, params + 1, params + 2};
   162	
   163			pr_warn("No valid parameter page, trying bit-wise majority to recover it\n");
   164			bit_wise_majority(srcbufs, ARRAY_SIZE(srcbufs), params,
   165					  sizeof(*params));
   166	
   167			if (spinand_crc16(0x4F4E, (u8 *)params, 254) !=
   168					le16_to_cpu(params->crc)) {
   169				pr_err("Parameter page recovery failed, aborting\n");
   170				goto free_params;
   171			}
   172		}
   173	
   174		params->model[sizeof(params->model) - 1] = 0;
   175		strim(params->model);
   176	
   177		deviceinfo.model = kstrdup(params->model, GFP_KERNEL);
   178		if (!deviceinfo.model) {
   179			ret = -ENOMEM;
   180			goto free_params;
   181		}
   182	
   183		deviceinfo.devid = id[2];
   184		deviceinfo.flags = 0;
   185		deviceinfo.memorg.bits_per_cell = params->bits_per_cell;
 > 186		deviceinfo.memorg.pagesize = params->byte_per_page;
 > 187		deviceinfo.memorg.oobsize = params->spare_bytes_per_page;
 > 188		deviceinfo.memorg.pages_per_eraseblock = params->pages_per_block;
   189		deviceinfo.memorg.eraseblocks_per_lun =
 > 190			params->blocks_per_lun * params->lun_count;
   191		deviceinfo.memorg.planes_per_lun = params->lun_count;
   192		deviceinfo.memorg.luns_per_target = 1;
   193		deviceinfo.memorg.ntargets = 1;
   194		deviceinfo.eccreq.strength = params->ecc_max_correct_ability;
   195		deviceinfo.eccreq.step_size = 512;
   196		deviceinfo.eccinfo.get_status = ecc_get_status;
   197		deviceinfo.eccinfo.ooblayout = &ooblayout;
   198		deviceinfo.op_variants.read_cache = &read_cache_variants;
   199		deviceinfo.op_variants.write_cache = &write_cache_variants;
   200		deviceinfo.op_variants.update_cache = &update_cache_variants;
   201	
   202		ret = spinand_match_and_init(spinand, &deviceinfo,
   203					     1, id[2]);
   204		if (ret)
   205			goto free_model;
   206	
   207		kfree(params);
   208	
   209		return 1;
   210	
   211	free_model:
   212		kfree(deviceinfo.model);
   213	free_params:
   214		kfree(params);
   215	
   216		return ret;
   217	}
   218	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux