From: kernel test robot <lkp@intel.com>
To: Md Sadre Alam <quic_mdalam@quicinc.com>,
broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, andersson@kernel.org,
konrad.dybcio@linaro.org, miquel.raynal@bootlin.com,
richard@nod.at, vigneshr@ti.com,
manivannan.sadhasivam@linaro.org, esben@geanix.com,
linux-arm-msm@vger.kernel.org, linux-spi@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-mtd@lists.infradead.org
Cc: oe-kbuild-all@lists.linux.dev, quic_mdalam@quicinc.com,
quic_varada@quicinc.com, quic_srichara@quicinc.com
Subject: Re: [PATCH v7 2/8] mtd: rawnand: qcom: cleanup qcom_nandc driver
Date: Fri, 26 Jul 2024 02:26:03 +0800 [thread overview]
Message-ID: <202407260215.PNyGyFnW-lkp@intel.com> (raw)
In-Reply-To: <20240724114225.2176448-3-quic_mdalam@quicinc.com>
Hi Md,
kernel test robot noticed the following build warnings:
[auto build test WARNING on mtd/nand/next]
[also build test WARNING on broonie-spi/for-next robh/for-next linus/master v6.10 next-20240725]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Md-Sadre-Alam/spi-dt-bindings-Introduce-qcom-spi-qpic-snand/20240724-195819
base: https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next
patch link: https://lore.kernel.org/r/20240724114225.2176448-3-quic_mdalam%40quicinc.com
patch subject: [PATCH v7 2/8] mtd: rawnand: qcom: cleanup qcom_nandc driver
config: microblaze-randconfig-r133-20240725 (https://download.01.org/0day-ci/archive/20240726/202407260215.PNyGyFnW-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 14.1.0
reproduce: (https://download.01.org/0day-ci/archive/20240726/202407260215.PNyGyFnW-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407260215.PNyGyFnW-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/mtd/nand/raw/qcom_nandc.c:689:45: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location0 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:689:45: sparse: expected restricted __le32 [usertype] read_location0
drivers/mtd/nand/raw/qcom_nandc.c:689:45: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:691:45: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location1 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:691:45: sparse: expected restricted __le32 [usertype] read_location1
drivers/mtd/nand/raw/qcom_nandc.c:691:45: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:693:45: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location2 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:693:45: sparse: expected restricted __le32 [usertype] read_location2
drivers/mtd/nand/raw/qcom_nandc.c:693:45: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:695:45: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location3 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:695:45: sparse: expected restricted __le32 [usertype] read_location3
drivers/mtd/nand/raw/qcom_nandc.c:695:45: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:718:50: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location_last0 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:718:50: sparse: expected restricted __le32 [usertype] read_location_last0
drivers/mtd/nand/raw/qcom_nandc.c:718:50: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:720:50: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location_last1 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:720:50: sparse: expected restricted __le32 [usertype] read_location_last1
drivers/mtd/nand/raw/qcom_nandc.c:720:50: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:722:50: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location_last2 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:722:50: sparse: expected restricted __le32 [usertype] read_location_last2
drivers/mtd/nand/raw/qcom_nandc.c:722:50: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:724:50: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location_last3 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:724:50: sparse: expected restricted __le32 [usertype] read_location_last3
drivers/mtd/nand/raw/qcom_nandc.c:724:50: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:757:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr0 @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:757:28: sparse: expected restricted __le32 [usertype] addr0
drivers/mtd/nand/raw/qcom_nandc.c:757:28: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:758:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr1 @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:758:28: sparse: expected restricted __le32 [usertype] addr1
drivers/mtd/nand/raw/qcom_nandc.c:758:28: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:798:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd @@ got unsigned int [assigned] [usertype] cmd @@
drivers/mtd/nand/raw/qcom_nandc.c:798:26: sparse: expected restricted __le32 [usertype] cmd
drivers/mtd/nand/raw/qcom_nandc.c:798:26: sparse: got unsigned int [assigned] [usertype] cmd
>> drivers/mtd/nand/raw/qcom_nandc.c:799:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg0 @@ got unsigned int [assigned] [usertype] cfg0 @@
drivers/mtd/nand/raw/qcom_nandc.c:799:27: sparse: expected restricted __le32 [usertype] cfg0
drivers/mtd/nand/raw/qcom_nandc.c:799:27: sparse: got unsigned int [assigned] [usertype] cfg0
>> drivers/mtd/nand/raw/qcom_nandc.c:800:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg1 @@ got unsigned int [assigned] [usertype] cfg1 @@
drivers/mtd/nand/raw/qcom_nandc.c:800:27: sparse: expected restricted __le32 [usertype] cfg1
drivers/mtd/nand/raw/qcom_nandc.c:800:27: sparse: got unsigned int [assigned] [usertype] cfg1
>> drivers/mtd/nand/raw/qcom_nandc.c:801:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] ecc_bch_cfg @@ got unsigned int [assigned] [usertype] ecc_bch_cfg @@
drivers/mtd/nand/raw/qcom_nandc.c:801:34: sparse: expected restricted __le32 [usertype] ecc_bch_cfg
drivers/mtd/nand/raw/qcom_nandc.c:801:34: sparse: got unsigned int [assigned] [usertype] ecc_bch_cfg
>> drivers/mtd/nand/raw/qcom_nandc.c:804:42: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] ecc_buf_cfg @@ got unsigned int [usertype] ecc_buf_cfg @@
drivers/mtd/nand/raw/qcom_nandc.c:804:42: sparse: expected restricted __le32 [usertype] ecc_buf_cfg
drivers/mtd/nand/raw/qcom_nandc.c:804:42: sparse: got unsigned int [usertype] ecc_buf_cfg
>> drivers/mtd/nand/raw/qcom_nandc.c:806:37: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] clrflashstatus @@ got unsigned int [usertype] clrflashstatus @@
drivers/mtd/nand/raw/qcom_nandc.c:806:37: sparse: expected restricted __le32 [usertype] clrflashstatus
drivers/mtd/nand/raw/qcom_nandc.c:806:37: sparse: got unsigned int [usertype] clrflashstatus
>> drivers/mtd/nand/raw/qcom_nandc.c:807:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] clrreadstatus @@ got unsigned int [usertype] clrreadstatus @@
drivers/mtd/nand/raw/qcom_nandc.c:807:36: sparse: expected restricted __le32 [usertype] clrreadstatus
drivers/mtd/nand/raw/qcom_nandc.c:807:36: sparse: got unsigned int [usertype] clrreadstatus
>> drivers/mtd/nand/raw/qcom_nandc.c:808:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] exec @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:808:27: sparse: expected restricted __le32 [usertype] exec
drivers/mtd/nand/raw/qcom_nandc.c:808:27: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:2656:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd @@ got unsigned int [addressable] [usertype] cmd_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2656:26: sparse: expected restricted __le32 [usertype] cmd
drivers/mtd/nand/raw/qcom_nandc.c:2656:26: sparse: got unsigned int [addressable] [usertype] cmd_reg
drivers/mtd/nand/raw/qcom_nandc.c:2657:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] exec @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2657:27: sparse: expected restricted __le32 [usertype] exec
drivers/mtd/nand/raw/qcom_nandc.c:2657:27: sparse: got int
drivers/mtd/nand/raw/qcom_nandc.c:2713:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd @@ got unsigned int [addressable] [usertype] cmd_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2713:26: sparse: expected restricted __le32 [usertype] cmd
drivers/mtd/nand/raw/qcom_nandc.c:2713:26: sparse: got unsigned int [addressable] [usertype] cmd_reg
>> drivers/mtd/nand/raw/qcom_nandc.c:2714:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr0 @@ got unsigned int [addressable] [usertype] addr1_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2714:28: sparse: expected restricted __le32 [usertype] addr0
drivers/mtd/nand/raw/qcom_nandc.c:2714:28: sparse: got unsigned int [addressable] [usertype] addr1_reg
>> drivers/mtd/nand/raw/qcom_nandc.c:2715:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr1 @@ got unsigned int [addressable] [usertype] addr2_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2715:28: sparse: expected restricted __le32 [usertype] addr1
drivers/mtd/nand/raw/qcom_nandc.c:2715:28: sparse: got unsigned int [addressable] [usertype] addr2_reg
>> drivers/mtd/nand/raw/qcom_nandc.c:2716:31: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] chip_sel @@ got unsigned long @@
drivers/mtd/nand/raw/qcom_nandc.c:2716:31: sparse: expected restricted __le32 [usertype] chip_sel
drivers/mtd/nand/raw/qcom_nandc.c:2716:31: sparse: got unsigned long
drivers/mtd/nand/raw/qcom_nandc.c:2717:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] exec @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2717:27: sparse: expected restricted __le32 [usertype] exec
drivers/mtd/nand/raw/qcom_nandc.c:2717:27: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:2757:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr0 @@ got unsigned int [addressable] [assigned] [usertype] addr1_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2757:36: sparse: expected restricted __le32 [usertype] addr0
drivers/mtd/nand/raw/qcom_nandc.c:2757:36: sparse: got unsigned int [addressable] [assigned] [usertype] addr1_reg
>> drivers/mtd/nand/raw/qcom_nandc.c:2758:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr1 @@ got unsigned int [addressable] [assigned] [usertype] addr2_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2758:36: sparse: expected restricted __le32 [usertype] addr1
drivers/mtd/nand/raw/qcom_nandc.c:2758:36: sparse: got unsigned int [addressable] [assigned] [usertype] addr2_reg
>> drivers/mtd/nand/raw/qcom_nandc.c:2759:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg0 @@ got unsigned int @@
drivers/mtd/nand/raw/qcom_nandc.c:2759:35: sparse: expected restricted __le32 [usertype] cfg0
drivers/mtd/nand/raw/qcom_nandc.c:2759:35: sparse: got unsigned int
>> drivers/mtd/nand/raw/qcom_nandc.c:2760:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg1 @@ got unsigned int [usertype] cfg1_raw @@
drivers/mtd/nand/raw/qcom_nandc.c:2760:35: sparse: expected restricted __le32 [usertype] cfg1
drivers/mtd/nand/raw/qcom_nandc.c:2760:35: sparse: got unsigned int [usertype] cfg1_raw
>> drivers/mtd/nand/raw/qcom_nandc.c:2773:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd @@ got unsigned int [addressable] [assigned] [usertype] cmd_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2773:26: sparse: expected restricted __le32 [usertype] cmd
drivers/mtd/nand/raw/qcom_nandc.c:2773:26: sparse: got unsigned int [addressable] [assigned] [usertype] cmd_reg
drivers/mtd/nand/raw/qcom_nandc.c:2774:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] exec @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2774:27: sparse: expected restricted __le32 [usertype] exec
drivers/mtd/nand/raw/qcom_nandc.c:2774:27: sparse: got int
drivers/mtd/nand/raw/qcom_nandc.c:2819:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd @@ got unsigned int [addressable] [assigned] [usertype] cmd_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2819:26: sparse: expected restricted __le32 [usertype] cmd
drivers/mtd/nand/raw/qcom_nandc.c:2819:26: sparse: got unsigned int [addressable] [assigned] [usertype] cmd_reg
drivers/mtd/nand/raw/qcom_nandc.c:2823:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg0 @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2823:27: sparse: expected restricted __le32 [usertype] cfg0
drivers/mtd/nand/raw/qcom_nandc.c:2823:27: sparse: got int
drivers/mtd/nand/raw/qcom_nandc.c:2828:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg1 @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2828:27: sparse: expected restricted __le32 [usertype] cfg1
drivers/mtd/nand/raw/qcom_nandc.c:2828:27: sparse: got int
drivers/mtd/nand/raw/qcom_nandc.c:2837:42: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] ecc_buf_cfg @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2837:42: sparse: expected restricted __le32 [usertype] ecc_buf_cfg
drivers/mtd/nand/raw/qcom_nandc.c:2837:42: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:2841:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] vld @@ got unsigned long @@
drivers/mtd/nand/raw/qcom_nandc.c:2841:34: sparse: expected restricted __le32 [usertype] vld
drivers/mtd/nand/raw/qcom_nandc.c:2841:34: sparse: got unsigned long
>> drivers/mtd/nand/raw/qcom_nandc.c:2842:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd1 @@ got unsigned int @@
drivers/mtd/nand/raw/qcom_nandc.c:2842:35: sparse: expected restricted __le32 [usertype] cmd1
drivers/mtd/nand/raw/qcom_nandc.c:2842:35: sparse: got unsigned int
drivers/mtd/nand/raw/qcom_nandc.c:2846:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] exec @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2846:27: sparse: expected restricted __le32 [usertype] exec
drivers/mtd/nand/raw/qcom_nandc.c:2846:27: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:2849:40: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] orig_cmd1 @@ got unsigned int [usertype] cmd1 @@
drivers/mtd/nand/raw/qcom_nandc.c:2849:40: sparse: expected restricted __le32 [usertype] orig_cmd1
drivers/mtd/nand/raw/qcom_nandc.c:2849:40: sparse: got unsigned int [usertype] cmd1
>> drivers/mtd/nand/raw/qcom_nandc.c:2850:39: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] orig_vld @@ got unsigned int [usertype] vld @@
drivers/mtd/nand/raw/qcom_nandc.c:2850:39: sparse: expected restricted __le32 [usertype] orig_vld
drivers/mtd/nand/raw/qcom_nandc.c:2850:39: sparse: got unsigned int [usertype] vld
vim +689 drivers/mtd/nand/raw/qcom_nandc.c
669
670 /**
671 * nandc_set_read_loc_first() - to set read location first register
672 * @reg_base: location register base
673 * @cw_offset: code word offset
674 * @read_size: code word read length
675 * @is_last_read_loc: is this the last read location
676 *
677 * This function will set location register value
678 */
679 static void nandc_set_read_loc_first(struct nand_chip *chip,
680 int reg_base, int cw_offset,
681 int read_size, int is_last_read_loc)
682 {
683 struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
684 int val = (((cw_offset) << READ_LOCATION_OFFSET) |
685 ((read_size) << READ_LOCATION_SIZE) |
686 ((is_last_read_loc) << READ_LOCATION_LAST));
687
688 if (reg_base == NAND_READ_LOCATION_0)
> 689 nandc->regs->read_location0 = val;
690 else if (reg_base == NAND_READ_LOCATION_1)
> 691 nandc->regs->read_location1 = val;
692 else if (reg_base == NAND_READ_LOCATION_2)
> 693 nandc->regs->read_location2 = val;
694 else if (reg_base == NAND_READ_LOCATION_3)
> 695 nandc->regs->read_location3 = val;
696 }
697
698 /**
699 * nandc_set_read_loc_last - to set read location last register
700 * @reg_base: location register base
701 * @cw_offset: code word offset
702 * @read_size: code word read length
703 * @is_last_read_loc: is this the last read location
704 *
705 * This function will set location last register value
706 */
707 static void nandc_set_read_loc_last(struct nand_chip *chip,
708 int reg_base, int cw_offset,
709 int read_size, int is_last_read_loc)
710 {
711 struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
712
713 int val = (((cw_offset) << READ_LOCATION_OFFSET) |
714 ((read_size) << READ_LOCATION_SIZE) |
715 ((is_last_read_loc) << READ_LOCATION_LAST));
716
717 if (reg_base == NAND_READ_LOCATION_LAST_CW_0)
> 718 nandc->regs->read_location_last0 = val;
719 else if (reg_base == NAND_READ_LOCATION_LAST_CW_1)
> 720 nandc->regs->read_location_last1 = val;
721 else if (reg_base == NAND_READ_LOCATION_LAST_CW_2)
> 722 nandc->regs->read_location_last2 = val;
723 else if (reg_base == NAND_READ_LOCATION_LAST_CW_3)
> 724 nandc->regs->read_location_last3 = val;
725 }
726
727 /* helper to configure location register values */
728 static void nandc_set_read_loc(struct nand_chip *chip, int cw, int reg,
729 int cw_offset, int read_size, int is_last_read_loc)
730 {
731 struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
732 struct nand_ecc_ctrl *ecc = &chip->ecc;
733 int reg_base = NAND_READ_LOCATION_0;
734
735 if (nandc->props->qpic_version2 && qcom_nandc_is_last_cw(ecc, cw))
736 reg_base = NAND_READ_LOCATION_LAST_CW_0;
737
738 reg_base += reg * 4;
739
740 if (nandc->props->qpic_version2 && qcom_nandc_is_last_cw(ecc, cw))
741 return nandc_set_read_loc_last(chip, reg_base, cw_offset,
742 read_size, is_last_read_loc);
743 else
744 return nandc_set_read_loc_first(chip, reg_base, cw_offset,
745 read_size, is_last_read_loc);
746 }
747
748 /* helper to configure address register values */
749 static void set_address(struct qcom_nand_host *host, u16 column, int page)
750 {
751 struct nand_chip *chip = &host->chip;
752 struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
753
754 if (chip->options & NAND_BUSWIDTH_16)
755 column >>= 1;
756
> 757 nandc->regs->addr0 = page << 16 | column;
> 758 nandc->regs->addr1 = page >> 16 & 0xff;
759 }
760
761 /*
762 * update_rw_regs: set up read/write register values, these will be
763 * written to the NAND controller registers via DMA
764 *
765 * @num_cw: number of steps for the read/write operation
766 * @read: read or write operation
767 * @cw : which code word
768 */
769 static void update_rw_regs(struct qcom_nand_host *host, int num_cw, bool read, int cw)
770 {
771 struct nand_chip *chip = &host->chip;
772 u32 cmd, cfg0, cfg1, ecc_bch_cfg;
773 struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
774
775 if (read) {
776 if (host->use_ecc)
777 cmd = OP_PAGE_READ_WITH_ECC | PAGE_ACC | LAST_PAGE;
778 else
779 cmd = OP_PAGE_READ | PAGE_ACC | LAST_PAGE;
780 } else {
781 cmd = OP_PROGRAM_PAGE | PAGE_ACC | LAST_PAGE;
782 }
783
784 if (host->use_ecc) {
785 cfg0 = (host->cfg0 & ~(7U << CW_PER_PAGE)) |
786 (num_cw - 1) << CW_PER_PAGE;
787
788 cfg1 = host->cfg1;
789 ecc_bch_cfg = host->ecc_bch_cfg;
790 } else {
791 cfg0 = (host->cfg0_raw & ~(7U << CW_PER_PAGE)) |
792 (num_cw - 1) << CW_PER_PAGE;
793
794 cfg1 = host->cfg1_raw;
795 ecc_bch_cfg = 1 << ECC_CFG_ECC_DISABLE;
796 }
797
> 798 nandc->regs->cmd = cmd;
> 799 nandc->regs->cfg0 = cfg0;
> 800 nandc->regs->cfg1 = cfg1;
> 801 nandc->regs->ecc_bch_cfg = ecc_bch_cfg;
802
803 if (!nandc->props->qpic_version2)
> 804 nandc->regs->ecc_buf_cfg = host->ecc_buf_cfg;
805
> 806 nandc->regs->clrflashstatus = host->clrflashstatus;
> 807 nandc->regs->clrreadstatus = host->clrreadstatus;
> 808 nandc->regs->exec = 1;
809
810 if (read)
811 nandc_set_read_loc(chip, cw, 0, 0, host->use_ecc ?
812 host->cw_data : host->cw_size, 1);
813 }
814
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Md Sadre Alam <quic_mdalam@quicinc.com>,
broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, andersson@kernel.org,
konrad.dybcio@linaro.org, miquel.raynal@bootlin.com,
richard@nod.at, vigneshr@ti.com,
manivannan.sadhasivam@linaro.org, esben@geanix.com,
linux-arm-msm@vger.kernel.org, linux-spi@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-mtd@lists.infradead.org
Cc: oe-kbuild-all@lists.linux.dev, quic_mdalam@quicinc.com,
quic_varada@quicinc.com, quic_srichara@quicinc.com
Subject: Re: [PATCH v7 2/8] mtd: rawnand: qcom: cleanup qcom_nandc driver
Date: Fri, 26 Jul 2024 02:26:03 +0800 [thread overview]
Message-ID: <202407260215.PNyGyFnW-lkp@intel.com> (raw)
In-Reply-To: <20240724114225.2176448-3-quic_mdalam@quicinc.com>
Hi Md,
kernel test robot noticed the following build warnings:
[auto build test WARNING on mtd/nand/next]
[also build test WARNING on broonie-spi/for-next robh/for-next linus/master v6.10 next-20240725]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Md-Sadre-Alam/spi-dt-bindings-Introduce-qcom-spi-qpic-snand/20240724-195819
base: https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next
patch link: https://lore.kernel.org/r/20240724114225.2176448-3-quic_mdalam%40quicinc.com
patch subject: [PATCH v7 2/8] mtd: rawnand: qcom: cleanup qcom_nandc driver
config: microblaze-randconfig-r133-20240725 (https://download.01.org/0day-ci/archive/20240726/202407260215.PNyGyFnW-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 14.1.0
reproduce: (https://download.01.org/0day-ci/archive/20240726/202407260215.PNyGyFnW-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407260215.PNyGyFnW-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/mtd/nand/raw/qcom_nandc.c:689:45: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location0 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:689:45: sparse: expected restricted __le32 [usertype] read_location0
drivers/mtd/nand/raw/qcom_nandc.c:689:45: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:691:45: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location1 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:691:45: sparse: expected restricted __le32 [usertype] read_location1
drivers/mtd/nand/raw/qcom_nandc.c:691:45: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:693:45: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location2 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:693:45: sparse: expected restricted __le32 [usertype] read_location2
drivers/mtd/nand/raw/qcom_nandc.c:693:45: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:695:45: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location3 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:695:45: sparse: expected restricted __le32 [usertype] read_location3
drivers/mtd/nand/raw/qcom_nandc.c:695:45: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:718:50: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location_last0 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:718:50: sparse: expected restricted __le32 [usertype] read_location_last0
drivers/mtd/nand/raw/qcom_nandc.c:718:50: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:720:50: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location_last1 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:720:50: sparse: expected restricted __le32 [usertype] read_location_last1
drivers/mtd/nand/raw/qcom_nandc.c:720:50: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:722:50: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location_last2 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:722:50: sparse: expected restricted __le32 [usertype] read_location_last2
drivers/mtd/nand/raw/qcom_nandc.c:722:50: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:724:50: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] read_location_last3 @@ got int val @@
drivers/mtd/nand/raw/qcom_nandc.c:724:50: sparse: expected restricted __le32 [usertype] read_location_last3
drivers/mtd/nand/raw/qcom_nandc.c:724:50: sparse: got int val
>> drivers/mtd/nand/raw/qcom_nandc.c:757:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr0 @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:757:28: sparse: expected restricted __le32 [usertype] addr0
drivers/mtd/nand/raw/qcom_nandc.c:757:28: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:758:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr1 @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:758:28: sparse: expected restricted __le32 [usertype] addr1
drivers/mtd/nand/raw/qcom_nandc.c:758:28: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:798:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd @@ got unsigned int [assigned] [usertype] cmd @@
drivers/mtd/nand/raw/qcom_nandc.c:798:26: sparse: expected restricted __le32 [usertype] cmd
drivers/mtd/nand/raw/qcom_nandc.c:798:26: sparse: got unsigned int [assigned] [usertype] cmd
>> drivers/mtd/nand/raw/qcom_nandc.c:799:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg0 @@ got unsigned int [assigned] [usertype] cfg0 @@
drivers/mtd/nand/raw/qcom_nandc.c:799:27: sparse: expected restricted __le32 [usertype] cfg0
drivers/mtd/nand/raw/qcom_nandc.c:799:27: sparse: got unsigned int [assigned] [usertype] cfg0
>> drivers/mtd/nand/raw/qcom_nandc.c:800:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg1 @@ got unsigned int [assigned] [usertype] cfg1 @@
drivers/mtd/nand/raw/qcom_nandc.c:800:27: sparse: expected restricted __le32 [usertype] cfg1
drivers/mtd/nand/raw/qcom_nandc.c:800:27: sparse: got unsigned int [assigned] [usertype] cfg1
>> drivers/mtd/nand/raw/qcom_nandc.c:801:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] ecc_bch_cfg @@ got unsigned int [assigned] [usertype] ecc_bch_cfg @@
drivers/mtd/nand/raw/qcom_nandc.c:801:34: sparse: expected restricted __le32 [usertype] ecc_bch_cfg
drivers/mtd/nand/raw/qcom_nandc.c:801:34: sparse: got unsigned int [assigned] [usertype] ecc_bch_cfg
>> drivers/mtd/nand/raw/qcom_nandc.c:804:42: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] ecc_buf_cfg @@ got unsigned int [usertype] ecc_buf_cfg @@
drivers/mtd/nand/raw/qcom_nandc.c:804:42: sparse: expected restricted __le32 [usertype] ecc_buf_cfg
drivers/mtd/nand/raw/qcom_nandc.c:804:42: sparse: got unsigned int [usertype] ecc_buf_cfg
>> drivers/mtd/nand/raw/qcom_nandc.c:806:37: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] clrflashstatus @@ got unsigned int [usertype] clrflashstatus @@
drivers/mtd/nand/raw/qcom_nandc.c:806:37: sparse: expected restricted __le32 [usertype] clrflashstatus
drivers/mtd/nand/raw/qcom_nandc.c:806:37: sparse: got unsigned int [usertype] clrflashstatus
>> drivers/mtd/nand/raw/qcom_nandc.c:807:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] clrreadstatus @@ got unsigned int [usertype] clrreadstatus @@
drivers/mtd/nand/raw/qcom_nandc.c:807:36: sparse: expected restricted __le32 [usertype] clrreadstatus
drivers/mtd/nand/raw/qcom_nandc.c:807:36: sparse: got unsigned int [usertype] clrreadstatus
>> drivers/mtd/nand/raw/qcom_nandc.c:808:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] exec @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:808:27: sparse: expected restricted __le32 [usertype] exec
drivers/mtd/nand/raw/qcom_nandc.c:808:27: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:2656:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd @@ got unsigned int [addressable] [usertype] cmd_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2656:26: sparse: expected restricted __le32 [usertype] cmd
drivers/mtd/nand/raw/qcom_nandc.c:2656:26: sparse: got unsigned int [addressable] [usertype] cmd_reg
drivers/mtd/nand/raw/qcom_nandc.c:2657:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] exec @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2657:27: sparse: expected restricted __le32 [usertype] exec
drivers/mtd/nand/raw/qcom_nandc.c:2657:27: sparse: got int
drivers/mtd/nand/raw/qcom_nandc.c:2713:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd @@ got unsigned int [addressable] [usertype] cmd_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2713:26: sparse: expected restricted __le32 [usertype] cmd
drivers/mtd/nand/raw/qcom_nandc.c:2713:26: sparse: got unsigned int [addressable] [usertype] cmd_reg
>> drivers/mtd/nand/raw/qcom_nandc.c:2714:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr0 @@ got unsigned int [addressable] [usertype] addr1_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2714:28: sparse: expected restricted __le32 [usertype] addr0
drivers/mtd/nand/raw/qcom_nandc.c:2714:28: sparse: got unsigned int [addressable] [usertype] addr1_reg
>> drivers/mtd/nand/raw/qcom_nandc.c:2715:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr1 @@ got unsigned int [addressable] [usertype] addr2_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2715:28: sparse: expected restricted __le32 [usertype] addr1
drivers/mtd/nand/raw/qcom_nandc.c:2715:28: sparse: got unsigned int [addressable] [usertype] addr2_reg
>> drivers/mtd/nand/raw/qcom_nandc.c:2716:31: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] chip_sel @@ got unsigned long @@
drivers/mtd/nand/raw/qcom_nandc.c:2716:31: sparse: expected restricted __le32 [usertype] chip_sel
drivers/mtd/nand/raw/qcom_nandc.c:2716:31: sparse: got unsigned long
drivers/mtd/nand/raw/qcom_nandc.c:2717:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] exec @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2717:27: sparse: expected restricted __le32 [usertype] exec
drivers/mtd/nand/raw/qcom_nandc.c:2717:27: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:2757:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr0 @@ got unsigned int [addressable] [assigned] [usertype] addr1_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2757:36: sparse: expected restricted __le32 [usertype] addr0
drivers/mtd/nand/raw/qcom_nandc.c:2757:36: sparse: got unsigned int [addressable] [assigned] [usertype] addr1_reg
>> drivers/mtd/nand/raw/qcom_nandc.c:2758:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] addr1 @@ got unsigned int [addressable] [assigned] [usertype] addr2_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2758:36: sparse: expected restricted __le32 [usertype] addr1
drivers/mtd/nand/raw/qcom_nandc.c:2758:36: sparse: got unsigned int [addressable] [assigned] [usertype] addr2_reg
>> drivers/mtd/nand/raw/qcom_nandc.c:2759:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg0 @@ got unsigned int @@
drivers/mtd/nand/raw/qcom_nandc.c:2759:35: sparse: expected restricted __le32 [usertype] cfg0
drivers/mtd/nand/raw/qcom_nandc.c:2759:35: sparse: got unsigned int
>> drivers/mtd/nand/raw/qcom_nandc.c:2760:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg1 @@ got unsigned int [usertype] cfg1_raw @@
drivers/mtd/nand/raw/qcom_nandc.c:2760:35: sparse: expected restricted __le32 [usertype] cfg1
drivers/mtd/nand/raw/qcom_nandc.c:2760:35: sparse: got unsigned int [usertype] cfg1_raw
>> drivers/mtd/nand/raw/qcom_nandc.c:2773:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd @@ got unsigned int [addressable] [assigned] [usertype] cmd_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2773:26: sparse: expected restricted __le32 [usertype] cmd
drivers/mtd/nand/raw/qcom_nandc.c:2773:26: sparse: got unsigned int [addressable] [assigned] [usertype] cmd_reg
drivers/mtd/nand/raw/qcom_nandc.c:2774:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] exec @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2774:27: sparse: expected restricted __le32 [usertype] exec
drivers/mtd/nand/raw/qcom_nandc.c:2774:27: sparse: got int
drivers/mtd/nand/raw/qcom_nandc.c:2819:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd @@ got unsigned int [addressable] [assigned] [usertype] cmd_reg @@
drivers/mtd/nand/raw/qcom_nandc.c:2819:26: sparse: expected restricted __le32 [usertype] cmd
drivers/mtd/nand/raw/qcom_nandc.c:2819:26: sparse: got unsigned int [addressable] [assigned] [usertype] cmd_reg
drivers/mtd/nand/raw/qcom_nandc.c:2823:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg0 @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2823:27: sparse: expected restricted __le32 [usertype] cfg0
drivers/mtd/nand/raw/qcom_nandc.c:2823:27: sparse: got int
drivers/mtd/nand/raw/qcom_nandc.c:2828:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cfg1 @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2828:27: sparse: expected restricted __le32 [usertype] cfg1
drivers/mtd/nand/raw/qcom_nandc.c:2828:27: sparse: got int
drivers/mtd/nand/raw/qcom_nandc.c:2837:42: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] ecc_buf_cfg @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2837:42: sparse: expected restricted __le32 [usertype] ecc_buf_cfg
drivers/mtd/nand/raw/qcom_nandc.c:2837:42: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:2841:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] vld @@ got unsigned long @@
drivers/mtd/nand/raw/qcom_nandc.c:2841:34: sparse: expected restricted __le32 [usertype] vld
drivers/mtd/nand/raw/qcom_nandc.c:2841:34: sparse: got unsigned long
>> drivers/mtd/nand/raw/qcom_nandc.c:2842:35: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cmd1 @@ got unsigned int @@
drivers/mtd/nand/raw/qcom_nandc.c:2842:35: sparse: expected restricted __le32 [usertype] cmd1
drivers/mtd/nand/raw/qcom_nandc.c:2842:35: sparse: got unsigned int
drivers/mtd/nand/raw/qcom_nandc.c:2846:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] exec @@ got int @@
drivers/mtd/nand/raw/qcom_nandc.c:2846:27: sparse: expected restricted __le32 [usertype] exec
drivers/mtd/nand/raw/qcom_nandc.c:2846:27: sparse: got int
>> drivers/mtd/nand/raw/qcom_nandc.c:2849:40: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] orig_cmd1 @@ got unsigned int [usertype] cmd1 @@
drivers/mtd/nand/raw/qcom_nandc.c:2849:40: sparse: expected restricted __le32 [usertype] orig_cmd1
drivers/mtd/nand/raw/qcom_nandc.c:2849:40: sparse: got unsigned int [usertype] cmd1
>> drivers/mtd/nand/raw/qcom_nandc.c:2850:39: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] orig_vld @@ got unsigned int [usertype] vld @@
drivers/mtd/nand/raw/qcom_nandc.c:2850:39: sparse: expected restricted __le32 [usertype] orig_vld
drivers/mtd/nand/raw/qcom_nandc.c:2850:39: sparse: got unsigned int [usertype] vld
vim +689 drivers/mtd/nand/raw/qcom_nandc.c
669
670 /**
671 * nandc_set_read_loc_first() - to set read location first register
672 * @reg_base: location register base
673 * @cw_offset: code word offset
674 * @read_size: code word read length
675 * @is_last_read_loc: is this the last read location
676 *
677 * This function will set location register value
678 */
679 static void nandc_set_read_loc_first(struct nand_chip *chip,
680 int reg_base, int cw_offset,
681 int read_size, int is_last_read_loc)
682 {
683 struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
684 int val = (((cw_offset) << READ_LOCATION_OFFSET) |
685 ((read_size) << READ_LOCATION_SIZE) |
686 ((is_last_read_loc) << READ_LOCATION_LAST));
687
688 if (reg_base == NAND_READ_LOCATION_0)
> 689 nandc->regs->read_location0 = val;
690 else if (reg_base == NAND_READ_LOCATION_1)
> 691 nandc->regs->read_location1 = val;
692 else if (reg_base == NAND_READ_LOCATION_2)
> 693 nandc->regs->read_location2 = val;
694 else if (reg_base == NAND_READ_LOCATION_3)
> 695 nandc->regs->read_location3 = val;
696 }
697
698 /**
699 * nandc_set_read_loc_last - to set read location last register
700 * @reg_base: location register base
701 * @cw_offset: code word offset
702 * @read_size: code word read length
703 * @is_last_read_loc: is this the last read location
704 *
705 * This function will set location last register value
706 */
707 static void nandc_set_read_loc_last(struct nand_chip *chip,
708 int reg_base, int cw_offset,
709 int read_size, int is_last_read_loc)
710 {
711 struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
712
713 int val = (((cw_offset) << READ_LOCATION_OFFSET) |
714 ((read_size) << READ_LOCATION_SIZE) |
715 ((is_last_read_loc) << READ_LOCATION_LAST));
716
717 if (reg_base == NAND_READ_LOCATION_LAST_CW_0)
> 718 nandc->regs->read_location_last0 = val;
719 else if (reg_base == NAND_READ_LOCATION_LAST_CW_1)
> 720 nandc->regs->read_location_last1 = val;
721 else if (reg_base == NAND_READ_LOCATION_LAST_CW_2)
> 722 nandc->regs->read_location_last2 = val;
723 else if (reg_base == NAND_READ_LOCATION_LAST_CW_3)
> 724 nandc->regs->read_location_last3 = val;
725 }
726
727 /* helper to configure location register values */
728 static void nandc_set_read_loc(struct nand_chip *chip, int cw, int reg,
729 int cw_offset, int read_size, int is_last_read_loc)
730 {
731 struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
732 struct nand_ecc_ctrl *ecc = &chip->ecc;
733 int reg_base = NAND_READ_LOCATION_0;
734
735 if (nandc->props->qpic_version2 && qcom_nandc_is_last_cw(ecc, cw))
736 reg_base = NAND_READ_LOCATION_LAST_CW_0;
737
738 reg_base += reg * 4;
739
740 if (nandc->props->qpic_version2 && qcom_nandc_is_last_cw(ecc, cw))
741 return nandc_set_read_loc_last(chip, reg_base, cw_offset,
742 read_size, is_last_read_loc);
743 else
744 return nandc_set_read_loc_first(chip, reg_base, cw_offset,
745 read_size, is_last_read_loc);
746 }
747
748 /* helper to configure address register values */
749 static void set_address(struct qcom_nand_host *host, u16 column, int page)
750 {
751 struct nand_chip *chip = &host->chip;
752 struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
753
754 if (chip->options & NAND_BUSWIDTH_16)
755 column >>= 1;
756
> 757 nandc->regs->addr0 = page << 16 | column;
> 758 nandc->regs->addr1 = page >> 16 & 0xff;
759 }
760
761 /*
762 * update_rw_regs: set up read/write register values, these will be
763 * written to the NAND controller registers via DMA
764 *
765 * @num_cw: number of steps for the read/write operation
766 * @read: read or write operation
767 * @cw : which code word
768 */
769 static void update_rw_regs(struct qcom_nand_host *host, int num_cw, bool read, int cw)
770 {
771 struct nand_chip *chip = &host->chip;
772 u32 cmd, cfg0, cfg1, ecc_bch_cfg;
773 struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip);
774
775 if (read) {
776 if (host->use_ecc)
777 cmd = OP_PAGE_READ_WITH_ECC | PAGE_ACC | LAST_PAGE;
778 else
779 cmd = OP_PAGE_READ | PAGE_ACC | LAST_PAGE;
780 } else {
781 cmd = OP_PROGRAM_PAGE | PAGE_ACC | LAST_PAGE;
782 }
783
784 if (host->use_ecc) {
785 cfg0 = (host->cfg0 & ~(7U << CW_PER_PAGE)) |
786 (num_cw - 1) << CW_PER_PAGE;
787
788 cfg1 = host->cfg1;
789 ecc_bch_cfg = host->ecc_bch_cfg;
790 } else {
791 cfg0 = (host->cfg0_raw & ~(7U << CW_PER_PAGE)) |
792 (num_cw - 1) << CW_PER_PAGE;
793
794 cfg1 = host->cfg1_raw;
795 ecc_bch_cfg = 1 << ECC_CFG_ECC_DISABLE;
796 }
797
> 798 nandc->regs->cmd = cmd;
> 799 nandc->regs->cfg0 = cfg0;
> 800 nandc->regs->cfg1 = cfg1;
> 801 nandc->regs->ecc_bch_cfg = ecc_bch_cfg;
802
803 if (!nandc->props->qpic_version2)
> 804 nandc->regs->ecc_buf_cfg = host->ecc_buf_cfg;
805
> 806 nandc->regs->clrflashstatus = host->clrflashstatus;
> 807 nandc->regs->clrreadstatus = host->clrreadstatus;
> 808 nandc->regs->exec = 1;
809
810 if (read)
811 nandc_set_read_loc(chip, cw, 0, 0, host->use_ecc ?
812 host->cw_data : host->cw_size, 1);
813 }
814
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply other threads:[~2024-07-25 18:26 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-24 11:42 [PATCH v7 0/8] Add QPIC SPI NAND driver Md Sadre Alam
2024-07-24 11:42 ` Md Sadre Alam
2024-07-24 11:42 ` [PATCH v7 1/8] spi: dt-bindings: Introduce qcom,spi-qpic-snand Md Sadre Alam
2024-07-24 11:42 ` Md Sadre Alam
2024-07-24 11:42 ` [PATCH v7 2/8] mtd: rawnand: qcom: cleanup qcom_nandc driver Md Sadre Alam
2024-07-24 11:42 ` Md Sadre Alam
2024-07-24 20:15 ` kernel test robot
2024-07-24 20:15 ` kernel test robot
2024-07-25 18:26 ` kernel test robot [this message]
2024-07-25 18:26 ` kernel test robot
2024-07-24 11:42 ` [PATCH v7 3/8] mtd: rawnand: qcom: Add qcom prefix to common api Md Sadre Alam
2024-07-24 11:42 ` Md Sadre Alam
2024-07-24 11:42 ` [PATCH v7 4/8] mtd: nand: Add qpic_common API file Md Sadre Alam
2024-07-24 11:42 ` Md Sadre Alam
2024-07-25 19:40 ` kernel test robot
2024-07-25 19:40 ` kernel test robot
2024-07-24 11:42 ` [PATCH v7 5/8] mtd: rawnand: qcom: use FIELD_PREP and GENMASK Md Sadre Alam
2024-07-24 11:42 ` Md Sadre Alam
2024-07-25 20:55 ` kernel test robot
2024-07-25 20:55 ` kernel test robot
2024-07-24 11:42 ` [PATCH v7 6/8] spi: spi-qpic: add driver for QCOM SPI NAND flash Interface Md Sadre Alam
2024-07-24 11:42 ` Md Sadre Alam
2024-07-24 23:45 ` kernel test robot
2024-07-24 23:45 ` kernel test robot
2024-07-24 11:42 ` [PATCH v7 7/8] arm64: dts: qcom: ipq9574: Add SPI nand support Md Sadre Alam
2024-07-24 11:42 ` Md Sadre Alam
2024-07-24 11:42 ` [PATCH v7 8/8] arm64: dts: qcom: ipq9574: Disable eMMC node Md Sadre Alam
2024-07-24 11:42 ` Md Sadre Alam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202407260215.PNyGyFnW-lkp@intel.com \
--to=lkp@intel.com \
--cc=andersson@kernel.org \
--cc=broonie@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=esben@geanix.com \
--cc=konrad.dybcio@linaro.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-spi@vger.kernel.org \
--cc=manivannan.sadhasivam@linaro.org \
--cc=miquel.raynal@bootlin.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=quic_mdalam@quicinc.com \
--cc=quic_srichara@quicinc.com \
--cc=quic_varada@quicinc.com \
--cc=richard@nod.at \
--cc=robh@kernel.org \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.