All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/mtd/nand/raw/pl35x-nand-controller.c:789 pl35x_nfc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
@ 2021-08-19 15:40 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-08-19 15:40 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 7384 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Miquel Raynal <miquel.raynal@bootlin.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d6d09a6942050f21b065a134169002b4d6b701ef
commit: 08d8c62164a322eb923034acacf25246b775593a mtd: rawnand: pl353: Add support for the ARM PL353 SMC NAND controller
date:   9 weeks ago
:::::: branch date: 21 hours ago
:::::: commit date: 9 weeks ago
config: arm-randconfig-m031-20210818 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/mtd/nand/raw/pl35x-nand-controller.c:789 pl35x_nfc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
drivers/mtd/nand/raw/pl35x-nand-controller.c:1126 pl35x_nand_chips_init() error: uninitialized symbol 'ret'.

vim +/PTR_ERR +789 drivers/mtd/nand/raw/pl35x-nand-controller.c

08d8c62164a322 Miquel Raynal 2021-06-10  776  
08d8c62164a322 Miquel Raynal 2021-06-10  777  static int pl35x_nfc_setup_interface(struct nand_chip *chip, int cs,
08d8c62164a322 Miquel Raynal 2021-06-10  778  				     const struct nand_interface_config *conf)
08d8c62164a322 Miquel Raynal 2021-06-10  779  {
08d8c62164a322 Miquel Raynal 2021-06-10  780  	struct pl35x_nandc *nfc = to_pl35x_nandc(chip->controller);
08d8c62164a322 Miquel Raynal 2021-06-10  781  	struct pl35x_nand *plnand = to_pl35x_nand(chip);
08d8c62164a322 Miquel Raynal 2021-06-10  782  	struct pl35x_nand_timings tmgs = {};
08d8c62164a322 Miquel Raynal 2021-06-10  783  	const struct nand_sdr_timings *sdr;
08d8c62164a322 Miquel Raynal 2021-06-10  784  	unsigned int period_ns, val;
08d8c62164a322 Miquel Raynal 2021-06-10  785  	struct clk *mclk;
08d8c62164a322 Miquel Raynal 2021-06-10  786  
08d8c62164a322 Miquel Raynal 2021-06-10  787  	sdr = nand_get_sdr_timings(conf);
08d8c62164a322 Miquel Raynal 2021-06-10  788  	if (IS_ERR(sdr))
08d8c62164a322 Miquel Raynal 2021-06-10 @789  		return PTR_ERR(sdr);
08d8c62164a322 Miquel Raynal 2021-06-10  790  
08d8c62164a322 Miquel Raynal 2021-06-10  791  	mclk = of_clk_get_by_name(nfc->dev->parent->of_node, "memclk");
08d8c62164a322 Miquel Raynal 2021-06-10  792  	if (IS_ERR(mclk)) {
08d8c62164a322 Miquel Raynal 2021-06-10  793  		dev_err(nfc->dev, "Failed to retrieve SMC memclk\n");
08d8c62164a322 Miquel Raynal 2021-06-10  794  		return PTR_ERR(mclk);
08d8c62164a322 Miquel Raynal 2021-06-10  795  	}
08d8c62164a322 Miquel Raynal 2021-06-10  796  
08d8c62164a322 Miquel Raynal 2021-06-10  797  	/*
08d8c62164a322 Miquel Raynal 2021-06-10  798  	 * SDR timings are given in pico-seconds while NFC timings must be
08d8c62164a322 Miquel Raynal 2021-06-10  799  	 * expressed in NAND controller clock cycles. We use the TO_CYCLE()
08d8c62164a322 Miquel Raynal 2021-06-10  800  	 * macro to convert from one to the other.
08d8c62164a322 Miquel Raynal 2021-06-10  801  	 */
08d8c62164a322 Miquel Raynal 2021-06-10  802  	period_ns = NSEC_PER_SEC / clk_get_rate(mclk);
08d8c62164a322 Miquel Raynal 2021-06-10  803  
08d8c62164a322 Miquel Raynal 2021-06-10  804  	/*
08d8c62164a322 Miquel Raynal 2021-06-10  805  	 * PL35X SMC needs one extra read cycle in SDR Mode 5. This is not
08d8c62164a322 Miquel Raynal 2021-06-10  806  	 * written anywhere in the datasheet but is an empirical observation.
08d8c62164a322 Miquel Raynal 2021-06-10  807  	 */
08d8c62164a322 Miquel Raynal 2021-06-10  808  	val = TO_CYCLES(sdr->tRC_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  809  	if (sdr->tRC_min <= 20000)
08d8c62164a322 Miquel Raynal 2021-06-10  810  		val++;
08d8c62164a322 Miquel Raynal 2021-06-10  811  
08d8c62164a322 Miquel Raynal 2021-06-10  812  	tmgs.t_rc = val;
08d8c62164a322 Miquel Raynal 2021-06-10  813  	if (tmgs.t_rc != val || tmgs.t_rc < 2)
08d8c62164a322 Miquel Raynal 2021-06-10  814  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  815  
08d8c62164a322 Miquel Raynal 2021-06-10  816  	val = TO_CYCLES(sdr->tWC_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  817  	tmgs.t_wc = val;
08d8c62164a322 Miquel Raynal 2021-06-10  818  	if (tmgs.t_wc != val || tmgs.t_wc < 2)
08d8c62164a322 Miquel Raynal 2021-06-10  819  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  820  
08d8c62164a322 Miquel Raynal 2021-06-10  821  	/*
08d8c62164a322 Miquel Raynal 2021-06-10  822  	 * For all SDR modes, PL35X SMC needs tREA_max being 1,
08d8c62164a322 Miquel Raynal 2021-06-10  823  	 * this is also an empirical result.
08d8c62164a322 Miquel Raynal 2021-06-10  824  	 */
08d8c62164a322 Miquel Raynal 2021-06-10  825  	tmgs.t_rea = 1;
08d8c62164a322 Miquel Raynal 2021-06-10  826  
08d8c62164a322 Miquel Raynal 2021-06-10  827  	val = TO_CYCLES(sdr->tWP_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  828  	tmgs.t_wp = val;
08d8c62164a322 Miquel Raynal 2021-06-10  829  	if (tmgs.t_wp != val || tmgs.t_wp < 1)
08d8c62164a322 Miquel Raynal 2021-06-10  830  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  831  
08d8c62164a322 Miquel Raynal 2021-06-10  832  	val = TO_CYCLES(sdr->tCLR_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  833  	tmgs.t_clr = val;
08d8c62164a322 Miquel Raynal 2021-06-10  834  	if (tmgs.t_clr != val)
08d8c62164a322 Miquel Raynal 2021-06-10  835  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  836  
08d8c62164a322 Miquel Raynal 2021-06-10  837  	val = TO_CYCLES(sdr->tAR_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  838  	tmgs.t_ar = val;
08d8c62164a322 Miquel Raynal 2021-06-10  839  	if (tmgs.t_ar != val)
08d8c62164a322 Miquel Raynal 2021-06-10  840  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  841  
08d8c62164a322 Miquel Raynal 2021-06-10  842  	val = TO_CYCLES(sdr->tRR_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  843  	tmgs.t_rr = val;
08d8c62164a322 Miquel Raynal 2021-06-10  844  	if (tmgs.t_rr != val)
08d8c62164a322 Miquel Raynal 2021-06-10  845  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  846  
08d8c62164a322 Miquel Raynal 2021-06-10  847  	if (cs == NAND_DATA_IFACE_CHECK_ONLY)
08d8c62164a322 Miquel Raynal 2021-06-10  848  		return 0;
08d8c62164a322 Miquel Raynal 2021-06-10  849  
08d8c62164a322 Miquel Raynal 2021-06-10  850  	plnand->timings = PL35X_SMC_NAND_TRC_CYCLES(tmgs.t_rc) |
08d8c62164a322 Miquel Raynal 2021-06-10  851  			  PL35X_SMC_NAND_TWC_CYCLES(tmgs.t_wc) |
08d8c62164a322 Miquel Raynal 2021-06-10  852  			  PL35X_SMC_NAND_TREA_CYCLES(tmgs.t_rea) |
08d8c62164a322 Miquel Raynal 2021-06-10  853  			  PL35X_SMC_NAND_TWP_CYCLES(tmgs.t_wp) |
08d8c62164a322 Miquel Raynal 2021-06-10  854  			  PL35X_SMC_NAND_TCLR_CYCLES(tmgs.t_clr) |
08d8c62164a322 Miquel Raynal 2021-06-10  855  			  PL35X_SMC_NAND_TAR_CYCLES(tmgs.t_ar) |
08d8c62164a322 Miquel Raynal 2021-06-10  856  			  PL35X_SMC_NAND_TRR_CYCLES(tmgs.t_rr);
08d8c62164a322 Miquel Raynal 2021-06-10  857  
08d8c62164a322 Miquel Raynal 2021-06-10  858  	return 0;
08d8c62164a322 Miquel Raynal 2021-06-10  859  }
08d8c62164a322 Miquel Raynal 2021-06-10  860  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 31004 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* drivers/mtd/nand/raw/pl35x-nand-controller.c:789 pl35x_nfc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
@ 2021-11-28 23:23 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-11-28 23:23 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 7457 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Miquel Raynal <miquel.raynal@bootlin.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d06c942efea40e1701ade200477a7449008d9f24
commit: 08d8c62164a322eb923034acacf25246b775593a mtd: rawnand: pl353: Add support for the ARM PL353 SMC NAND controller
date:   5 months ago
:::::: branch date: 3 hours ago
:::::: commit date: 5 months ago
config: arm-randconfig-m031-20211128 (https://download.01.org/0day-ci/archive/20211129/202111290715.ri1gAWCJ-lkp(a)intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/mtd/nand/raw/pl35x-nand-controller.c:789 pl35x_nfc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
drivers/mtd/nand/raw/pl35x-nand-controller.c:1126 pl35x_nand_chips_init() error: uninitialized symbol 'ret'.

vim +/PTR_ERR +789 drivers/mtd/nand/raw/pl35x-nand-controller.c

08d8c62164a322 Miquel Raynal 2021-06-10  776  
08d8c62164a322 Miquel Raynal 2021-06-10  777  static int pl35x_nfc_setup_interface(struct nand_chip *chip, int cs,
08d8c62164a322 Miquel Raynal 2021-06-10  778  				     const struct nand_interface_config *conf)
08d8c62164a322 Miquel Raynal 2021-06-10  779  {
08d8c62164a322 Miquel Raynal 2021-06-10  780  	struct pl35x_nandc *nfc = to_pl35x_nandc(chip->controller);
08d8c62164a322 Miquel Raynal 2021-06-10  781  	struct pl35x_nand *plnand = to_pl35x_nand(chip);
08d8c62164a322 Miquel Raynal 2021-06-10  782  	struct pl35x_nand_timings tmgs = {};
08d8c62164a322 Miquel Raynal 2021-06-10  783  	const struct nand_sdr_timings *sdr;
08d8c62164a322 Miquel Raynal 2021-06-10  784  	unsigned int period_ns, val;
08d8c62164a322 Miquel Raynal 2021-06-10  785  	struct clk *mclk;
08d8c62164a322 Miquel Raynal 2021-06-10  786  
08d8c62164a322 Miquel Raynal 2021-06-10  787  	sdr = nand_get_sdr_timings(conf);
08d8c62164a322 Miquel Raynal 2021-06-10  788  	if (IS_ERR(sdr))
08d8c62164a322 Miquel Raynal 2021-06-10 @789  		return PTR_ERR(sdr);
08d8c62164a322 Miquel Raynal 2021-06-10  790  
08d8c62164a322 Miquel Raynal 2021-06-10  791  	mclk = of_clk_get_by_name(nfc->dev->parent->of_node, "memclk");
08d8c62164a322 Miquel Raynal 2021-06-10  792  	if (IS_ERR(mclk)) {
08d8c62164a322 Miquel Raynal 2021-06-10  793  		dev_err(nfc->dev, "Failed to retrieve SMC memclk\n");
08d8c62164a322 Miquel Raynal 2021-06-10  794  		return PTR_ERR(mclk);
08d8c62164a322 Miquel Raynal 2021-06-10  795  	}
08d8c62164a322 Miquel Raynal 2021-06-10  796  
08d8c62164a322 Miquel Raynal 2021-06-10  797  	/*
08d8c62164a322 Miquel Raynal 2021-06-10  798  	 * SDR timings are given in pico-seconds while NFC timings must be
08d8c62164a322 Miquel Raynal 2021-06-10  799  	 * expressed in NAND controller clock cycles. We use the TO_CYCLE()
08d8c62164a322 Miquel Raynal 2021-06-10  800  	 * macro to convert from one to the other.
08d8c62164a322 Miquel Raynal 2021-06-10  801  	 */
08d8c62164a322 Miquel Raynal 2021-06-10  802  	period_ns = NSEC_PER_SEC / clk_get_rate(mclk);
08d8c62164a322 Miquel Raynal 2021-06-10  803  
08d8c62164a322 Miquel Raynal 2021-06-10  804  	/*
08d8c62164a322 Miquel Raynal 2021-06-10  805  	 * PL35X SMC needs one extra read cycle in SDR Mode 5. This is not
08d8c62164a322 Miquel Raynal 2021-06-10  806  	 * written anywhere in the datasheet but is an empirical observation.
08d8c62164a322 Miquel Raynal 2021-06-10  807  	 */
08d8c62164a322 Miquel Raynal 2021-06-10  808  	val = TO_CYCLES(sdr->tRC_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  809  	if (sdr->tRC_min <= 20000)
08d8c62164a322 Miquel Raynal 2021-06-10  810  		val++;
08d8c62164a322 Miquel Raynal 2021-06-10  811  
08d8c62164a322 Miquel Raynal 2021-06-10  812  	tmgs.t_rc = val;
08d8c62164a322 Miquel Raynal 2021-06-10  813  	if (tmgs.t_rc != val || tmgs.t_rc < 2)
08d8c62164a322 Miquel Raynal 2021-06-10  814  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  815  
08d8c62164a322 Miquel Raynal 2021-06-10  816  	val = TO_CYCLES(sdr->tWC_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  817  	tmgs.t_wc = val;
08d8c62164a322 Miquel Raynal 2021-06-10  818  	if (tmgs.t_wc != val || tmgs.t_wc < 2)
08d8c62164a322 Miquel Raynal 2021-06-10  819  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  820  
08d8c62164a322 Miquel Raynal 2021-06-10  821  	/*
08d8c62164a322 Miquel Raynal 2021-06-10  822  	 * For all SDR modes, PL35X SMC needs tREA_max being 1,
08d8c62164a322 Miquel Raynal 2021-06-10  823  	 * this is also an empirical result.
08d8c62164a322 Miquel Raynal 2021-06-10  824  	 */
08d8c62164a322 Miquel Raynal 2021-06-10  825  	tmgs.t_rea = 1;
08d8c62164a322 Miquel Raynal 2021-06-10  826  
08d8c62164a322 Miquel Raynal 2021-06-10  827  	val = TO_CYCLES(sdr->tWP_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  828  	tmgs.t_wp = val;
08d8c62164a322 Miquel Raynal 2021-06-10  829  	if (tmgs.t_wp != val || tmgs.t_wp < 1)
08d8c62164a322 Miquel Raynal 2021-06-10  830  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  831  
08d8c62164a322 Miquel Raynal 2021-06-10  832  	val = TO_CYCLES(sdr->tCLR_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  833  	tmgs.t_clr = val;
08d8c62164a322 Miquel Raynal 2021-06-10  834  	if (tmgs.t_clr != val)
08d8c62164a322 Miquel Raynal 2021-06-10  835  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  836  
08d8c62164a322 Miquel Raynal 2021-06-10  837  	val = TO_CYCLES(sdr->tAR_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  838  	tmgs.t_ar = val;
08d8c62164a322 Miquel Raynal 2021-06-10  839  	if (tmgs.t_ar != val)
08d8c62164a322 Miquel Raynal 2021-06-10  840  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  841  
08d8c62164a322 Miquel Raynal 2021-06-10  842  	val = TO_CYCLES(sdr->tRR_min, period_ns);
08d8c62164a322 Miquel Raynal 2021-06-10  843  	tmgs.t_rr = val;
08d8c62164a322 Miquel Raynal 2021-06-10  844  	if (tmgs.t_rr != val)
08d8c62164a322 Miquel Raynal 2021-06-10  845  		return -EINVAL;
08d8c62164a322 Miquel Raynal 2021-06-10  846  
08d8c62164a322 Miquel Raynal 2021-06-10  847  	if (cs == NAND_DATA_IFACE_CHECK_ONLY)
08d8c62164a322 Miquel Raynal 2021-06-10  848  		return 0;
08d8c62164a322 Miquel Raynal 2021-06-10  849  
08d8c62164a322 Miquel Raynal 2021-06-10  850  	plnand->timings = PL35X_SMC_NAND_TRC_CYCLES(tmgs.t_rc) |
08d8c62164a322 Miquel Raynal 2021-06-10  851  			  PL35X_SMC_NAND_TWC_CYCLES(tmgs.t_wc) |
08d8c62164a322 Miquel Raynal 2021-06-10  852  			  PL35X_SMC_NAND_TREA_CYCLES(tmgs.t_rea) |
08d8c62164a322 Miquel Raynal 2021-06-10  853  			  PL35X_SMC_NAND_TWP_CYCLES(tmgs.t_wp) |
08d8c62164a322 Miquel Raynal 2021-06-10  854  			  PL35X_SMC_NAND_TCLR_CYCLES(tmgs.t_clr) |
08d8c62164a322 Miquel Raynal 2021-06-10  855  			  PL35X_SMC_NAND_TAR_CYCLES(tmgs.t_ar) |
08d8c62164a322 Miquel Raynal 2021-06-10  856  			  PL35X_SMC_NAND_TRR_CYCLES(tmgs.t_rr);
08d8c62164a322 Miquel Raynal 2021-06-10  857  
08d8c62164a322 Miquel Raynal 2021-06-10  858  	return 0;
08d8c62164a322 Miquel Raynal 2021-06-10  859  }
08d8c62164a322 Miquel Raynal 2021-06-10  860  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-11-28 23:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-19 15:40 drivers/mtd/nand/raw/pl35x-nand-controller.c:789 pl35x_nfc_setup_interface() warn: passing a valid pointer to 'PTR_ERR' kernel test robot
2021-11-28 23:23 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.