* drivers/mtd/nand/raw/renesas-nand-controller.c:900 rnandc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
@ 2022-02-09 14:07 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2022-02-09 14:07 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 7974 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: e6251ab4551f51fa4cee03523e08051898c3ce82
commit: d8701fe890ecbab239086e7053d62d0f08587d7c mtd: rawnand: renesas: Add new NAND controller driver
date: 7 weeks ago
:::::: branch date: 18 hours ago
:::::: commit date: 7 weeks ago
config: arm-randconfig-m031-20220208 (https://download.01.org/0day-ci/archive/20220209/202202092212.0gPYBlCk-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/renesas-nand-controller.c:900 rnandc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
vim +/PTR_ERR +900 drivers/mtd/nand/raw/renesas-nand-controller.c
d8701fe890ecbab Miquel Raynal 2021-12-17 888
d8701fe890ecbab Miquel Raynal 2021-12-17 889 static int rnandc_setup_interface(struct nand_chip *chip, int chipnr,
d8701fe890ecbab Miquel Raynal 2021-12-17 890 const struct nand_interface_config *conf)
d8701fe890ecbab Miquel Raynal 2021-12-17 891 {
d8701fe890ecbab Miquel Raynal 2021-12-17 892 struct rnand_chip *rnand = to_rnand(chip);
d8701fe890ecbab Miquel Raynal 2021-12-17 893 struct rnandc *rnandc = to_rnandc(chip->controller);
d8701fe890ecbab Miquel Raynal 2021-12-17 894 unsigned int period_ns = 1000000000 / clk_get_rate(rnandc->eclk);
d8701fe890ecbab Miquel Raynal 2021-12-17 895 const struct nand_sdr_timings *sdr;
d8701fe890ecbab Miquel Raynal 2021-12-17 896 unsigned int cyc, cle, ale, bef_dly, ca_to_data;
d8701fe890ecbab Miquel Raynal 2021-12-17 897
d8701fe890ecbab Miquel Raynal 2021-12-17 898 sdr = nand_get_sdr_timings(conf);
d8701fe890ecbab Miquel Raynal 2021-12-17 899 if (IS_ERR(sdr))
d8701fe890ecbab Miquel Raynal 2021-12-17 @900 return PTR_ERR(sdr);
d8701fe890ecbab Miquel Raynal 2021-12-17 901
d8701fe890ecbab Miquel Raynal 2021-12-17 902 if (sdr->tRP_min != sdr->tWP_min || sdr->tREH_min != sdr->tWH_min) {
d8701fe890ecbab Miquel Raynal 2021-12-17 903 dev_err(rnandc->dev, "Read and write hold times must be identical\n");
d8701fe890ecbab Miquel Raynal 2021-12-17 904 return -EINVAL;
d8701fe890ecbab Miquel Raynal 2021-12-17 905 }
d8701fe890ecbab Miquel Raynal 2021-12-17 906
d8701fe890ecbab Miquel Raynal 2021-12-17 907 if (chipnr < 0)
d8701fe890ecbab Miquel Raynal 2021-12-17 908 return 0;
d8701fe890ecbab Miquel Raynal 2021-12-17 909
d8701fe890ecbab Miquel Raynal 2021-12-17 910 rnand->timings_asyn =
d8701fe890ecbab Miquel Raynal 2021-12-17 911 TIMINGS_ASYN_TRWP(TO_CYCLES64(sdr->tRP_min, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 912 TIMINGS_ASYN_TRWH(TO_CYCLES64(sdr->tREH_min, period_ns));
d8701fe890ecbab Miquel Raynal 2021-12-17 913 rnand->tim_seq0 =
d8701fe890ecbab Miquel Raynal 2021-12-17 914 TIM_SEQ0_TCCS(TO_CYCLES64(sdr->tCCS_min, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 915 TIM_SEQ0_TADL(TO_CYCLES64(sdr->tADL_min, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 916 TIM_SEQ0_TRHW(TO_CYCLES64(sdr->tRHW_min, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 917 TIM_SEQ0_TWHR(TO_CYCLES64(sdr->tWHR_min, period_ns));
d8701fe890ecbab Miquel Raynal 2021-12-17 918 rnand->tim_seq1 =
d8701fe890ecbab Miquel Raynal 2021-12-17 919 TIM_SEQ1_TWB(TO_CYCLES64(sdr->tWB_max, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 920 TIM_SEQ1_TRR(TO_CYCLES64(sdr->tRR_min, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 921 TIM_SEQ1_TWW(TO_CYCLES64(sdr->tWW_min, period_ns));
d8701fe890ecbab Miquel Raynal 2021-12-17 922
d8701fe890ecbab Miquel Raynal 2021-12-17 923 cyc = sdr->tDS_min + sdr->tDH_min;
d8701fe890ecbab Miquel Raynal 2021-12-17 924 cle = sdr->tCLH_min + sdr->tCLS_min;
d8701fe890ecbab Miquel Raynal 2021-12-17 925 ale = sdr->tALH_min + sdr->tALS_min;
d8701fe890ecbab Miquel Raynal 2021-12-17 926 bef_dly = sdr->tWB_max - sdr->tDH_min;
d8701fe890ecbab Miquel Raynal 2021-12-17 927 ca_to_data = sdr->tWHR_min + sdr->tREA_max - sdr->tDH_min;
d8701fe890ecbab Miquel Raynal 2021-12-17 928
d8701fe890ecbab Miquel Raynal 2021-12-17 929 /*
d8701fe890ecbab Miquel Raynal 2021-12-17 930 * D0 = CMD -> ADDR = tCLH + tCLS - 1 cycle
d8701fe890ecbab Miquel Raynal 2021-12-17 931 * D1 = CMD -> CMD = tCLH + tCLS - 1 cycle
d8701fe890ecbab Miquel Raynal 2021-12-17 932 * D2 = CMD -> DLY = tWB - tDH
d8701fe890ecbab Miquel Raynal 2021-12-17 933 * D3 = CMD -> DATA = tWHR + tREA - tDH
d8701fe890ecbab Miquel Raynal 2021-12-17 934 */
d8701fe890ecbab Miquel Raynal 2021-12-17 935 rnand->tim_gen_seq0 =
d8701fe890ecbab Miquel Raynal 2021-12-17 936 TIM_GEN_SEQ0_D0(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 937 TIM_GEN_SEQ0_D1(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 938 TIM_GEN_SEQ0_D2(TO_CYCLES64(bef_dly, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 939 TIM_GEN_SEQ0_D3(TO_CYCLES64(ca_to_data, period_ns));
d8701fe890ecbab Miquel Raynal 2021-12-17 940
d8701fe890ecbab Miquel Raynal 2021-12-17 941 /*
d8701fe890ecbab Miquel Raynal 2021-12-17 942 * D4 = ADDR -> CMD = tALH + tALS - 1 cyle
d8701fe890ecbab Miquel Raynal 2021-12-17 943 * D5 = ADDR -> ADDR = tALH + tALS - 1 cyle
d8701fe890ecbab Miquel Raynal 2021-12-17 944 * D6 = ADDR -> DLY = tWB - tDH
d8701fe890ecbab Miquel Raynal 2021-12-17 945 * D7 = ADDR -> DATA = tWHR + tREA - tDH
d8701fe890ecbab Miquel Raynal 2021-12-17 946 */
d8701fe890ecbab Miquel Raynal 2021-12-17 947 rnand->tim_gen_seq1 =
d8701fe890ecbab Miquel Raynal 2021-12-17 948 TIM_GEN_SEQ1_D4(TO_CYCLES64(ale - cyc, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 949 TIM_GEN_SEQ1_D5(TO_CYCLES64(ale - cyc, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 950 TIM_GEN_SEQ1_D6(TO_CYCLES64(bef_dly, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 951 TIM_GEN_SEQ1_D7(TO_CYCLES64(ca_to_data, period_ns));
d8701fe890ecbab Miquel Raynal 2021-12-17 952
d8701fe890ecbab Miquel Raynal 2021-12-17 953 /*
d8701fe890ecbab Miquel Raynal 2021-12-17 954 * D8 = DLY -> DATA = tRR + tREA
d8701fe890ecbab Miquel Raynal 2021-12-17 955 * D9 = DLY -> CMD = tRR
d8701fe890ecbab Miquel Raynal 2021-12-17 956 * D10 = DATA -> CMD = tCLH + tCLS - 1 cycle
d8701fe890ecbab Miquel Raynal 2021-12-17 957 * D11 = DATA -> DLY = tWB - tDH
d8701fe890ecbab Miquel Raynal 2021-12-17 958 */
d8701fe890ecbab Miquel Raynal 2021-12-17 959 rnand->tim_gen_seq2 =
d8701fe890ecbab Miquel Raynal 2021-12-17 960 TIM_GEN_SEQ2_D8(TO_CYCLES64(sdr->tRR_min + sdr->tREA_max, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 961 TIM_GEN_SEQ2_D9(TO_CYCLES64(sdr->tRR_min, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 962 TIM_GEN_SEQ2_D10(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecbab Miquel Raynal 2021-12-17 963 TIM_GEN_SEQ2_D11(TO_CYCLES64(bef_dly, period_ns));
d8701fe890ecbab Miquel Raynal 2021-12-17 964
d8701fe890ecbab Miquel Raynal 2021-12-17 965 /* D12 = DATA -> END = tCLH - tDH */
d8701fe890ecbab Miquel Raynal 2021-12-17 966 rnand->tim_gen_seq3 =
d8701fe890ecbab Miquel Raynal 2021-12-17 967 TIM_GEN_SEQ3_D12(TO_CYCLES64(sdr->tCLH_min - sdr->tDH_min, period_ns));
d8701fe890ecbab Miquel Raynal 2021-12-17 968
d8701fe890ecbab Miquel Raynal 2021-12-17 969 return 0;
d8701fe890ecbab Miquel Raynal 2021-12-17 970 }
d8701fe890ecbab Miquel Raynal 2021-12-17 971
---
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] 4+ messages in thread
* drivers/mtd/nand/raw/renesas-nand-controller.c:900 rnandc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
@ 2022-04-19 6:26 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2022-04-19 6:26 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 7847 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
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: b2d229d4ddb17db541098b83524d901257e93845
commit: d8701fe890ecbab239086e7053d62d0f08587d7c mtd: rawnand: renesas: Add new NAND controller driver
date: 4 months ago
:::::: branch date: 33 hours ago
:::::: commit date: 4 months ago
config: h8300-randconfig-m031-20220418 (https://download.01.org/0day-ci/archive/20220419/202204191443.S4E9qa3P-lkp(a)intel.com/config)
compiler: h8300-linux-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/renesas-nand-controller.c:900 rnandc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
vim +/PTR_ERR +900 drivers/mtd/nand/raw/renesas-nand-controller.c
d8701fe890ecba Miquel Raynal 2021-12-17 888
d8701fe890ecba Miquel Raynal 2021-12-17 889 static int rnandc_setup_interface(struct nand_chip *chip, int chipnr,
d8701fe890ecba Miquel Raynal 2021-12-17 890 const struct nand_interface_config *conf)
d8701fe890ecba Miquel Raynal 2021-12-17 891 {
d8701fe890ecba Miquel Raynal 2021-12-17 892 struct rnand_chip *rnand = to_rnand(chip);
d8701fe890ecba Miquel Raynal 2021-12-17 893 struct rnandc *rnandc = to_rnandc(chip->controller);
d8701fe890ecba Miquel Raynal 2021-12-17 894 unsigned int period_ns = 1000000000 / clk_get_rate(rnandc->eclk);
d8701fe890ecba Miquel Raynal 2021-12-17 895 const struct nand_sdr_timings *sdr;
d8701fe890ecba Miquel Raynal 2021-12-17 896 unsigned int cyc, cle, ale, bef_dly, ca_to_data;
d8701fe890ecba Miquel Raynal 2021-12-17 897
d8701fe890ecba Miquel Raynal 2021-12-17 898 sdr = nand_get_sdr_timings(conf);
d8701fe890ecba Miquel Raynal 2021-12-17 899 if (IS_ERR(sdr))
d8701fe890ecba Miquel Raynal 2021-12-17 @900 return PTR_ERR(sdr);
d8701fe890ecba Miquel Raynal 2021-12-17 901
d8701fe890ecba Miquel Raynal 2021-12-17 902 if (sdr->tRP_min != sdr->tWP_min || sdr->tREH_min != sdr->tWH_min) {
d8701fe890ecba Miquel Raynal 2021-12-17 903 dev_err(rnandc->dev, "Read and write hold times must be identical\n");
d8701fe890ecba Miquel Raynal 2021-12-17 904 return -EINVAL;
d8701fe890ecba Miquel Raynal 2021-12-17 905 }
d8701fe890ecba Miquel Raynal 2021-12-17 906
d8701fe890ecba Miquel Raynal 2021-12-17 907 if (chipnr < 0)
d8701fe890ecba Miquel Raynal 2021-12-17 908 return 0;
d8701fe890ecba Miquel Raynal 2021-12-17 909
d8701fe890ecba Miquel Raynal 2021-12-17 910 rnand->timings_asyn =
d8701fe890ecba Miquel Raynal 2021-12-17 911 TIMINGS_ASYN_TRWP(TO_CYCLES64(sdr->tRP_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 912 TIMINGS_ASYN_TRWH(TO_CYCLES64(sdr->tREH_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 913 rnand->tim_seq0 =
d8701fe890ecba Miquel Raynal 2021-12-17 914 TIM_SEQ0_TCCS(TO_CYCLES64(sdr->tCCS_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 915 TIM_SEQ0_TADL(TO_CYCLES64(sdr->tADL_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 916 TIM_SEQ0_TRHW(TO_CYCLES64(sdr->tRHW_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 917 TIM_SEQ0_TWHR(TO_CYCLES64(sdr->tWHR_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 918 rnand->tim_seq1 =
d8701fe890ecba Miquel Raynal 2021-12-17 919 TIM_SEQ1_TWB(TO_CYCLES64(sdr->tWB_max, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 920 TIM_SEQ1_TRR(TO_CYCLES64(sdr->tRR_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 921 TIM_SEQ1_TWW(TO_CYCLES64(sdr->tWW_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 922
d8701fe890ecba Miquel Raynal 2021-12-17 923 cyc = sdr->tDS_min + sdr->tDH_min;
d8701fe890ecba Miquel Raynal 2021-12-17 924 cle = sdr->tCLH_min + sdr->tCLS_min;
d8701fe890ecba Miquel Raynal 2021-12-17 925 ale = sdr->tALH_min + sdr->tALS_min;
d8701fe890ecba Miquel Raynal 2021-12-17 926 bef_dly = sdr->tWB_max - sdr->tDH_min;
d8701fe890ecba Miquel Raynal 2021-12-17 927 ca_to_data = sdr->tWHR_min + sdr->tREA_max - sdr->tDH_min;
d8701fe890ecba Miquel Raynal 2021-12-17 928
d8701fe890ecba Miquel Raynal 2021-12-17 929 /*
d8701fe890ecba Miquel Raynal 2021-12-17 930 * D0 = CMD -> ADDR = tCLH + tCLS - 1 cycle
d8701fe890ecba Miquel Raynal 2021-12-17 931 * D1 = CMD -> CMD = tCLH + tCLS - 1 cycle
d8701fe890ecba Miquel Raynal 2021-12-17 932 * D2 = CMD -> DLY = tWB - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 933 * D3 = CMD -> DATA = tWHR + tREA - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 934 */
d8701fe890ecba Miquel Raynal 2021-12-17 935 rnand->tim_gen_seq0 =
d8701fe890ecba Miquel Raynal 2021-12-17 936 TIM_GEN_SEQ0_D0(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 937 TIM_GEN_SEQ0_D1(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 938 TIM_GEN_SEQ0_D2(TO_CYCLES64(bef_dly, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 939 TIM_GEN_SEQ0_D3(TO_CYCLES64(ca_to_data, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 940
d8701fe890ecba Miquel Raynal 2021-12-17 941 /*
d8701fe890ecba Miquel Raynal 2021-12-17 942 * D4 = ADDR -> CMD = tALH + tALS - 1 cyle
d8701fe890ecba Miquel Raynal 2021-12-17 943 * D5 = ADDR -> ADDR = tALH + tALS - 1 cyle
d8701fe890ecba Miquel Raynal 2021-12-17 944 * D6 = ADDR -> DLY = tWB - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 945 * D7 = ADDR -> DATA = tWHR + tREA - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 946 */
d8701fe890ecba Miquel Raynal 2021-12-17 947 rnand->tim_gen_seq1 =
d8701fe890ecba Miquel Raynal 2021-12-17 948 TIM_GEN_SEQ1_D4(TO_CYCLES64(ale - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 949 TIM_GEN_SEQ1_D5(TO_CYCLES64(ale - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 950 TIM_GEN_SEQ1_D6(TO_CYCLES64(bef_dly, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 951 TIM_GEN_SEQ1_D7(TO_CYCLES64(ca_to_data, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 952
d8701fe890ecba Miquel Raynal 2021-12-17 953 /*
d8701fe890ecba Miquel Raynal 2021-12-17 954 * D8 = DLY -> DATA = tRR + tREA
d8701fe890ecba Miquel Raynal 2021-12-17 955 * D9 = DLY -> CMD = tRR
d8701fe890ecba Miquel Raynal 2021-12-17 956 * D10 = DATA -> CMD = tCLH + tCLS - 1 cycle
d8701fe890ecba Miquel Raynal 2021-12-17 957 * D11 = DATA -> DLY = tWB - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 958 */
d8701fe890ecba Miquel Raynal 2021-12-17 959 rnand->tim_gen_seq2 =
d8701fe890ecba Miquel Raynal 2021-12-17 960 TIM_GEN_SEQ2_D8(TO_CYCLES64(sdr->tRR_min + sdr->tREA_max, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 961 TIM_GEN_SEQ2_D9(TO_CYCLES64(sdr->tRR_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 962 TIM_GEN_SEQ2_D10(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 963 TIM_GEN_SEQ2_D11(TO_CYCLES64(bef_dly, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 964
d8701fe890ecba Miquel Raynal 2021-12-17 965 /* D12 = DATA -> END = tCLH - tDH */
d8701fe890ecba Miquel Raynal 2021-12-17 966 rnand->tim_gen_seq3 =
d8701fe890ecba Miquel Raynal 2021-12-17 967 TIM_GEN_SEQ3_D12(TO_CYCLES64(sdr->tCLH_min - sdr->tDH_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 968
d8701fe890ecba Miquel Raynal 2021-12-17 969 return 0;
d8701fe890ecba Miquel Raynal 2021-12-17 970 }
d8701fe890ecba Miquel Raynal 2021-12-17 971
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 4+ messages in thread
* drivers/mtd/nand/raw/renesas-nand-controller.c:900 rnandc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
@ 2022-06-06 1:19 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2022-06-06 1:19 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 7858 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
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: d717180e7f9775d468f415c10a4a474640146001
commit: d8701fe890ecbab239086e7053d62d0f08587d7c mtd: rawnand: renesas: Add new NAND controller driver
date: 6 months ago
:::::: branch date: 7 hours ago
:::::: commit date: 6 months ago
config: microblaze-randconfig-m031-20220605 (https://download.01.org/0day-ci/archive/20220606/202206060933.pOhn51Vu-lkp(a)intel.com/config)
compiler: microblaze-linux-gcc (GCC) 11.3.0
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/mtd/nand/raw/renesas-nand-controller.c:900 rnandc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
vim +/PTR_ERR +900 drivers/mtd/nand/raw/renesas-nand-controller.c
d8701fe890ecba Miquel Raynal 2021-12-17 888
d8701fe890ecba Miquel Raynal 2021-12-17 889 static int rnandc_setup_interface(struct nand_chip *chip, int chipnr,
d8701fe890ecba Miquel Raynal 2021-12-17 890 const struct nand_interface_config *conf)
d8701fe890ecba Miquel Raynal 2021-12-17 891 {
d8701fe890ecba Miquel Raynal 2021-12-17 892 struct rnand_chip *rnand = to_rnand(chip);
d8701fe890ecba Miquel Raynal 2021-12-17 893 struct rnandc *rnandc = to_rnandc(chip->controller);
d8701fe890ecba Miquel Raynal 2021-12-17 894 unsigned int period_ns = 1000000000 / clk_get_rate(rnandc->eclk);
d8701fe890ecba Miquel Raynal 2021-12-17 895 const struct nand_sdr_timings *sdr;
d8701fe890ecba Miquel Raynal 2021-12-17 896 unsigned int cyc, cle, ale, bef_dly, ca_to_data;
d8701fe890ecba Miquel Raynal 2021-12-17 897
d8701fe890ecba Miquel Raynal 2021-12-17 898 sdr = nand_get_sdr_timings(conf);
d8701fe890ecba Miquel Raynal 2021-12-17 899 if (IS_ERR(sdr))
d8701fe890ecba Miquel Raynal 2021-12-17 @900 return PTR_ERR(sdr);
d8701fe890ecba Miquel Raynal 2021-12-17 901
d8701fe890ecba Miquel Raynal 2021-12-17 902 if (sdr->tRP_min != sdr->tWP_min || sdr->tREH_min != sdr->tWH_min) {
d8701fe890ecba Miquel Raynal 2021-12-17 903 dev_err(rnandc->dev, "Read and write hold times must be identical\n");
d8701fe890ecba Miquel Raynal 2021-12-17 904 return -EINVAL;
d8701fe890ecba Miquel Raynal 2021-12-17 905 }
d8701fe890ecba Miquel Raynal 2021-12-17 906
d8701fe890ecba Miquel Raynal 2021-12-17 907 if (chipnr < 0)
d8701fe890ecba Miquel Raynal 2021-12-17 908 return 0;
d8701fe890ecba Miquel Raynal 2021-12-17 909
d8701fe890ecba Miquel Raynal 2021-12-17 910 rnand->timings_asyn =
d8701fe890ecba Miquel Raynal 2021-12-17 911 TIMINGS_ASYN_TRWP(TO_CYCLES64(sdr->tRP_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 912 TIMINGS_ASYN_TRWH(TO_CYCLES64(sdr->tREH_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 913 rnand->tim_seq0 =
d8701fe890ecba Miquel Raynal 2021-12-17 914 TIM_SEQ0_TCCS(TO_CYCLES64(sdr->tCCS_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 915 TIM_SEQ0_TADL(TO_CYCLES64(sdr->tADL_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 916 TIM_SEQ0_TRHW(TO_CYCLES64(sdr->tRHW_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 917 TIM_SEQ0_TWHR(TO_CYCLES64(sdr->tWHR_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 918 rnand->tim_seq1 =
d8701fe890ecba Miquel Raynal 2021-12-17 919 TIM_SEQ1_TWB(TO_CYCLES64(sdr->tWB_max, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 920 TIM_SEQ1_TRR(TO_CYCLES64(sdr->tRR_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 921 TIM_SEQ1_TWW(TO_CYCLES64(sdr->tWW_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 922
d8701fe890ecba Miquel Raynal 2021-12-17 923 cyc = sdr->tDS_min + sdr->tDH_min;
d8701fe890ecba Miquel Raynal 2021-12-17 924 cle = sdr->tCLH_min + sdr->tCLS_min;
d8701fe890ecba Miquel Raynal 2021-12-17 925 ale = sdr->tALH_min + sdr->tALS_min;
d8701fe890ecba Miquel Raynal 2021-12-17 926 bef_dly = sdr->tWB_max - sdr->tDH_min;
d8701fe890ecba Miquel Raynal 2021-12-17 927 ca_to_data = sdr->tWHR_min + sdr->tREA_max - sdr->tDH_min;
d8701fe890ecba Miquel Raynal 2021-12-17 928
d8701fe890ecba Miquel Raynal 2021-12-17 929 /*
d8701fe890ecba Miquel Raynal 2021-12-17 930 * D0 = CMD -> ADDR = tCLH + tCLS - 1 cycle
d8701fe890ecba Miquel Raynal 2021-12-17 931 * D1 = CMD -> CMD = tCLH + tCLS - 1 cycle
d8701fe890ecba Miquel Raynal 2021-12-17 932 * D2 = CMD -> DLY = tWB - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 933 * D3 = CMD -> DATA = tWHR + tREA - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 934 */
d8701fe890ecba Miquel Raynal 2021-12-17 935 rnand->tim_gen_seq0 =
d8701fe890ecba Miquel Raynal 2021-12-17 936 TIM_GEN_SEQ0_D0(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 937 TIM_GEN_SEQ0_D1(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 938 TIM_GEN_SEQ0_D2(TO_CYCLES64(bef_dly, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 939 TIM_GEN_SEQ0_D3(TO_CYCLES64(ca_to_data, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 940
d8701fe890ecba Miquel Raynal 2021-12-17 941 /*
d8701fe890ecba Miquel Raynal 2021-12-17 942 * D4 = ADDR -> CMD = tALH + tALS - 1 cyle
d8701fe890ecba Miquel Raynal 2021-12-17 943 * D5 = ADDR -> ADDR = tALH + tALS - 1 cyle
d8701fe890ecba Miquel Raynal 2021-12-17 944 * D6 = ADDR -> DLY = tWB - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 945 * D7 = ADDR -> DATA = tWHR + tREA - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 946 */
d8701fe890ecba Miquel Raynal 2021-12-17 947 rnand->tim_gen_seq1 =
d8701fe890ecba Miquel Raynal 2021-12-17 948 TIM_GEN_SEQ1_D4(TO_CYCLES64(ale - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 949 TIM_GEN_SEQ1_D5(TO_CYCLES64(ale - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 950 TIM_GEN_SEQ1_D6(TO_CYCLES64(bef_dly, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 951 TIM_GEN_SEQ1_D7(TO_CYCLES64(ca_to_data, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 952
d8701fe890ecba Miquel Raynal 2021-12-17 953 /*
d8701fe890ecba Miquel Raynal 2021-12-17 954 * D8 = DLY -> DATA = tRR + tREA
d8701fe890ecba Miquel Raynal 2021-12-17 955 * D9 = DLY -> CMD = tRR
d8701fe890ecba Miquel Raynal 2021-12-17 956 * D10 = DATA -> CMD = tCLH + tCLS - 1 cycle
d8701fe890ecba Miquel Raynal 2021-12-17 957 * D11 = DATA -> DLY = tWB - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 958 */
d8701fe890ecba Miquel Raynal 2021-12-17 959 rnand->tim_gen_seq2 =
d8701fe890ecba Miquel Raynal 2021-12-17 960 TIM_GEN_SEQ2_D8(TO_CYCLES64(sdr->tRR_min + sdr->tREA_max, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 961 TIM_GEN_SEQ2_D9(TO_CYCLES64(sdr->tRR_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 962 TIM_GEN_SEQ2_D10(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 963 TIM_GEN_SEQ2_D11(TO_CYCLES64(bef_dly, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 964
d8701fe890ecba Miquel Raynal 2021-12-17 965 /* D12 = DATA -> END = tCLH - tDH */
d8701fe890ecba Miquel Raynal 2021-12-17 966 rnand->tim_gen_seq3 =
d8701fe890ecba Miquel Raynal 2021-12-17 967 TIM_GEN_SEQ3_D12(TO_CYCLES64(sdr->tCLH_min - sdr->tDH_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 968
d8701fe890ecba Miquel Raynal 2021-12-17 969 return 0;
d8701fe890ecba Miquel Raynal 2021-12-17 970 }
d8701fe890ecba Miquel Raynal 2021-12-17 971
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 4+ messages in thread
* drivers/mtd/nand/raw/renesas-nand-controller.c:900 rnandc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
@ 2022-07-25 10:29 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2022-07-25 10:29 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 7849 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
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: e0dccc3b76fb35bb257b4118367a883073d7390e
commit: d8701fe890ecbab239086e7053d62d0f08587d7c mtd: rawnand: renesas: Add new NAND controller driver
date: 7 months ago
:::::: branch date: 14 hours ago
:::::: commit date: 7 months ago
config: parisc-randconfig-m031-20220724 (https://download.01.org/0day-ci/archive/20220725/202207251805.7mLBLni5-lkp(a)intel.com/config)
compiler: hppa-linux-gcc (GCC) 12.1.0
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/mtd/nand/raw/renesas-nand-controller.c:900 rnandc_setup_interface() warn: passing a valid pointer to 'PTR_ERR'
vim +/PTR_ERR +900 drivers/mtd/nand/raw/renesas-nand-controller.c
d8701fe890ecba Miquel Raynal 2021-12-17 888
d8701fe890ecba Miquel Raynal 2021-12-17 889 static int rnandc_setup_interface(struct nand_chip *chip, int chipnr,
d8701fe890ecba Miquel Raynal 2021-12-17 890 const struct nand_interface_config *conf)
d8701fe890ecba Miquel Raynal 2021-12-17 891 {
d8701fe890ecba Miquel Raynal 2021-12-17 892 struct rnand_chip *rnand = to_rnand(chip);
d8701fe890ecba Miquel Raynal 2021-12-17 893 struct rnandc *rnandc = to_rnandc(chip->controller);
d8701fe890ecba Miquel Raynal 2021-12-17 894 unsigned int period_ns = 1000000000 / clk_get_rate(rnandc->eclk);
d8701fe890ecba Miquel Raynal 2021-12-17 895 const struct nand_sdr_timings *sdr;
d8701fe890ecba Miquel Raynal 2021-12-17 896 unsigned int cyc, cle, ale, bef_dly, ca_to_data;
d8701fe890ecba Miquel Raynal 2021-12-17 897
d8701fe890ecba Miquel Raynal 2021-12-17 898 sdr = nand_get_sdr_timings(conf);
d8701fe890ecba Miquel Raynal 2021-12-17 899 if (IS_ERR(sdr))
d8701fe890ecba Miquel Raynal 2021-12-17 @900 return PTR_ERR(sdr);
d8701fe890ecba Miquel Raynal 2021-12-17 901
d8701fe890ecba Miquel Raynal 2021-12-17 902 if (sdr->tRP_min != sdr->tWP_min || sdr->tREH_min != sdr->tWH_min) {
d8701fe890ecba Miquel Raynal 2021-12-17 903 dev_err(rnandc->dev, "Read and write hold times must be identical\n");
d8701fe890ecba Miquel Raynal 2021-12-17 904 return -EINVAL;
d8701fe890ecba Miquel Raynal 2021-12-17 905 }
d8701fe890ecba Miquel Raynal 2021-12-17 906
d8701fe890ecba Miquel Raynal 2021-12-17 907 if (chipnr < 0)
d8701fe890ecba Miquel Raynal 2021-12-17 908 return 0;
d8701fe890ecba Miquel Raynal 2021-12-17 909
d8701fe890ecba Miquel Raynal 2021-12-17 910 rnand->timings_asyn =
d8701fe890ecba Miquel Raynal 2021-12-17 911 TIMINGS_ASYN_TRWP(TO_CYCLES64(sdr->tRP_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 912 TIMINGS_ASYN_TRWH(TO_CYCLES64(sdr->tREH_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 913 rnand->tim_seq0 =
d8701fe890ecba Miquel Raynal 2021-12-17 914 TIM_SEQ0_TCCS(TO_CYCLES64(sdr->tCCS_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 915 TIM_SEQ0_TADL(TO_CYCLES64(sdr->tADL_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 916 TIM_SEQ0_TRHW(TO_CYCLES64(sdr->tRHW_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 917 TIM_SEQ0_TWHR(TO_CYCLES64(sdr->tWHR_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 918 rnand->tim_seq1 =
d8701fe890ecba Miquel Raynal 2021-12-17 919 TIM_SEQ1_TWB(TO_CYCLES64(sdr->tWB_max, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 920 TIM_SEQ1_TRR(TO_CYCLES64(sdr->tRR_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 921 TIM_SEQ1_TWW(TO_CYCLES64(sdr->tWW_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 922
d8701fe890ecba Miquel Raynal 2021-12-17 923 cyc = sdr->tDS_min + sdr->tDH_min;
d8701fe890ecba Miquel Raynal 2021-12-17 924 cle = sdr->tCLH_min + sdr->tCLS_min;
d8701fe890ecba Miquel Raynal 2021-12-17 925 ale = sdr->tALH_min + sdr->tALS_min;
d8701fe890ecba Miquel Raynal 2021-12-17 926 bef_dly = sdr->tWB_max - sdr->tDH_min;
d8701fe890ecba Miquel Raynal 2021-12-17 927 ca_to_data = sdr->tWHR_min + sdr->tREA_max - sdr->tDH_min;
d8701fe890ecba Miquel Raynal 2021-12-17 928
d8701fe890ecba Miquel Raynal 2021-12-17 929 /*
d8701fe890ecba Miquel Raynal 2021-12-17 930 * D0 = CMD -> ADDR = tCLH + tCLS - 1 cycle
d8701fe890ecba Miquel Raynal 2021-12-17 931 * D1 = CMD -> CMD = tCLH + tCLS - 1 cycle
d8701fe890ecba Miquel Raynal 2021-12-17 932 * D2 = CMD -> DLY = tWB - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 933 * D3 = CMD -> DATA = tWHR + tREA - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 934 */
d8701fe890ecba Miquel Raynal 2021-12-17 935 rnand->tim_gen_seq0 =
d8701fe890ecba Miquel Raynal 2021-12-17 936 TIM_GEN_SEQ0_D0(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 937 TIM_GEN_SEQ0_D1(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 938 TIM_GEN_SEQ0_D2(TO_CYCLES64(bef_dly, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 939 TIM_GEN_SEQ0_D3(TO_CYCLES64(ca_to_data, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 940
d8701fe890ecba Miquel Raynal 2021-12-17 941 /*
d8701fe890ecba Miquel Raynal 2021-12-17 942 * D4 = ADDR -> CMD = tALH + tALS - 1 cyle
d8701fe890ecba Miquel Raynal 2021-12-17 943 * D5 = ADDR -> ADDR = tALH + tALS - 1 cyle
d8701fe890ecba Miquel Raynal 2021-12-17 944 * D6 = ADDR -> DLY = tWB - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 945 * D7 = ADDR -> DATA = tWHR + tREA - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 946 */
d8701fe890ecba Miquel Raynal 2021-12-17 947 rnand->tim_gen_seq1 =
d8701fe890ecba Miquel Raynal 2021-12-17 948 TIM_GEN_SEQ1_D4(TO_CYCLES64(ale - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 949 TIM_GEN_SEQ1_D5(TO_CYCLES64(ale - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 950 TIM_GEN_SEQ1_D6(TO_CYCLES64(bef_dly, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 951 TIM_GEN_SEQ1_D7(TO_CYCLES64(ca_to_data, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 952
d8701fe890ecba Miquel Raynal 2021-12-17 953 /*
d8701fe890ecba Miquel Raynal 2021-12-17 954 * D8 = DLY -> DATA = tRR + tREA
d8701fe890ecba Miquel Raynal 2021-12-17 955 * D9 = DLY -> CMD = tRR
d8701fe890ecba Miquel Raynal 2021-12-17 956 * D10 = DATA -> CMD = tCLH + tCLS - 1 cycle
d8701fe890ecba Miquel Raynal 2021-12-17 957 * D11 = DATA -> DLY = tWB - tDH
d8701fe890ecba Miquel Raynal 2021-12-17 958 */
d8701fe890ecba Miquel Raynal 2021-12-17 959 rnand->tim_gen_seq2 =
d8701fe890ecba Miquel Raynal 2021-12-17 960 TIM_GEN_SEQ2_D8(TO_CYCLES64(sdr->tRR_min + sdr->tREA_max, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 961 TIM_GEN_SEQ2_D9(TO_CYCLES64(sdr->tRR_min, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 962 TIM_GEN_SEQ2_D10(TO_CYCLES64(cle - cyc, period_ns)) |
d8701fe890ecba Miquel Raynal 2021-12-17 963 TIM_GEN_SEQ2_D11(TO_CYCLES64(bef_dly, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 964
d8701fe890ecba Miquel Raynal 2021-12-17 965 /* D12 = DATA -> END = tCLH - tDH */
d8701fe890ecba Miquel Raynal 2021-12-17 966 rnand->tim_gen_seq3 =
d8701fe890ecba Miquel Raynal 2021-12-17 967 TIM_GEN_SEQ3_D12(TO_CYCLES64(sdr->tCLH_min - sdr->tDH_min, period_ns));
d8701fe890ecba Miquel Raynal 2021-12-17 968
d8701fe890ecba Miquel Raynal 2021-12-17 969 return 0;
d8701fe890ecba Miquel Raynal 2021-12-17 970 }
d8701fe890ecba Miquel Raynal 2021-12-17 971
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-07-25 10:29 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-25 10:29 drivers/mtd/nand/raw/renesas-nand-controller.c:900 rnandc_setup_interface() warn: passing a valid pointer to 'PTR_ERR' kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2022-06-06 1:19 kernel test robot
2022-04-19 6:26 kernel test robot
2022-02-09 14:07 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.