.../bindings/spi/qcom,spi-qpic-snand.yaml | 83 + .../boot/dts/qcom/ipq9574-rdp-common.dtsi | 43 + arch/arm64/boot/dts/qcom/ipq9574-rdp433.dts | 12 - arch/arm64/boot/dts/qcom/ipq9574.dtsi | 27 + drivers/mtd/nand/Makefile | 6 +- drivers/mtd/nand/qpic_common.c | 759 +++++++ drivers/mtd/nand/raw/qcom_nandc.c | 1773 +++-------------- drivers/spi/Kconfig | 9 + drivers/spi/Makefile | 1 + drivers/spi/spi-qpic-snand.c | 1633 +++++++++++++++ include/linux/mtd/nand-qpic-common.h | 482 +++++ 11 files changed, 3370 insertions(+), 1458 deletions(-) create mode 100644 Documentation/devicetree/bindings/spi/qcom,spi-qpic-snand.yaml create mode 100644 drivers/mtd/nand/qpic_common.c create mode 100644 drivers/spi/spi-qpic-snand.c create mode 100644 include/linux/mtd/nand-qpic-common.h
v14:
* Updated commit message
* Fix spelling mistake
* Remove "inline" from multiple APIs from qcom_nandc.c file
* Move '|' in qcom_param_page_type_exec() APIs at the end of line
v13:
* Added Reviewed-by tag
* Added MODULE_DESCRIPTION() macro
* Added 2024 Qualcomm Innovation Center Copyright
* Changed return type of qcom_spi_cmd_mapping() from u32 to
int to fix the kernel test bot warning
* Changed type of variable cmd in qcom_spi_write_page() from u32
to int
* Removed unused variable s_op from qcom_spi_write_page()
* Updated return value variable type from u32 to int in
qcom_spi_send_cmdaddr()
v12:
* Added EXPORT_SYMBOL() macro for all the api in qpic_common.c
* Added MODULE_LICENSE() macro in qpic_common.c to build
qpic_common.c as module as well
* Removed bool type for CONFIG_MTD_NAND_QCOM to fix build error
reported by kernel test bot
* Added obj-$(CONFIG_MTD_NAND_QCOM) += qpic_common.o condition
in Makefile to build qpic_common.c as built-in or as module
based on CONFIG_MTD_NAND_QCOM
* Added Reviewed-by tag
* Added obj-$(CONFIG_SPI_QPIC_SNAND) += qpic_common.o in Makefile
to build qpic_common.c based on CONFIG_SPI_QPIC_SNAND
* Updated commit header and commit message
* Removed sdhci node from rdp433.dts file
v11:
* Dropped Reviewed-by tag
* Added soc based compatible "qcom,ipq9574-snand"
* fixed build error reported by kernel test bot by
changing statement "depends on MTD" to "selct MTD"
in drivers/spi/Kconfig file
v10:
* Fixed compilation warnings reported by kernel test robot
* Added depends on CONFIG_MTD for qpic-spi nand driver
* Removed extra bracket from statement if (i == (num_cw - 1))
in qcom_spi_program_raw() api.
v9:
* Fixed all the compilation warning reported by
kernel test robot
* Changed type of cmd1, vld to u32 from __le32 in qcom_nand_controller
structure
* Changed type of cfg0, cfg1, cfg0_raw, cfg1_raw, clrflashstatus,
ecc_buf_cfg, ecc_bch_cfg, clrreadstatus to u32 in qcom_nand_host
structure
* In nandc_set_read_loc_first() api added cpu_to_le32() macro to fix
compilation warning reported by kernel test bot
* In nandc_set_read_loc_last() api added cpu_to_le32() macro to fix
compilation warning reported by kernel test bot
* Changed data type of cw_offset, read_size, is_last_read_loc to
u32 in nandc_set_read_loc() api to fix compilation warning reported
by kernel test bot
* In set_address() api added cpu_to_le32() macro to fix compilation
warning reported by kernel test bot
* In update_rw_regs() api added cpu_to_le32() macro to fix compilation
warning reported by kernel test bot
* In qcom_op_cmd_mapping() api added cpu_to_le32() macro to fix
compilation warning reported by kernel test bot
* In qcom_read_status_exec() api added cpu_to_le32() macro to fix
compilation warning reported by kernel test bot
* In qcom_read_id_type_exec() api added cpu_to_le32() macro to fix
compilation warning reported by kernel test bot
* In qcom_misc_cmd_type_exec() api added cpu_to_le32() macro to fix
compilation warning reported by kernel test bot
* In qcom_param_page_type_exec() api added cpu_to_le32() macro to fix
compilation warning reported by kernel test bot
* In update_rw_regs() api added cpu_to_le32() macro to fix compilation
issue reported by kernel test bot
* In qcom_param_page_type_exec() api added cpu_to_le32() macro to fix
compilation issue reported by kernel test bot
* Changed data type of addr1, addr2, cmd, to __le32 in qpic_spi_nand
structure
* In qcom_spi_set_read_loc_first() api added cpu_to_le32() macro to fix
compilation warning
* In qcom_spi_set_read_loc_last() api added cpu_to_le32() macro to fix
compilation warning
* In qcom_spi_init() api added cpu_to_le32() macro to fix compilation
warning
* In qcom_spi_ecc_init_ctx_pipelined() api removed unused variables
reqs, user, step_size, strength and added cpu_to_le32() macro as well
to fix compilation warning
* In qcom_spi_read_last_cw() api added cpu_to_le32() macro to fix
compilation warning
* In qcom_spi_check_error() api added cpu_to_le32() macro to fix
compilation warning
* In qcom_spi_read_page_ecc() api added cpu_to_le32() macro to fix
compilation warning
* In qcom_spi_read_page_oob() api added cpu_to_le32() macro to fix
compilation warning
* In qcom_spi_program_raw() api added cpu_to_le32() macro to fix
compilation warning
* In qcom_spi_program_ecc() api added cpu_to_le32() macro to fix
compilation warning
* In qcom_spi_program_oob() api added cpu_to_le32() macro to fix
compilation warning
* In qcom_spi_send_cmdaddr() api added cpu_to_le32() macro to fix
compilation warning
* In qcom_spi_io_op() api added cpu_to_le32() macro to fix compilation
warning
v8:
* Fixed compilation warning reported by kernel test robot
* Added "chip" description in nandc_set_read_loc_first()
* Added "chip" description" in nandc_set_read_loc_last()
* Changed data type of read_location0, read_location1,
read_location2, read_location3, addr0, addr1, cmd, cfg0,
cfg1, ecc_bch_cfg, ecc_buf_cfg, clrflashstatus, clrreadstatus,
orig_cmd1, orig_vld to __le32 to fix compilation warning.
* Included bitfield.h header file in spi-qpic-snand.c to
fix compilation warning
* Removed unused variable "steps" variable from
qcom_spi_ecc_init_ctx_pipelined()
v7:
* Added read_oob() and write_oob() api
* Added FIELD_PREP() in spi init
* Made CONFIG_SPI_QPIC_SNAND and CONFIG_MTD_NAND_QCOM
as bool type
* Removed offset 0 in oob_ecc() layout
* Handled multiple error condition
v6:
* Added FIELD_PREP() and GENMASK() macro
* Added qpic_spi_nand{..} structure for
spi nand realted variables
* Made qpic_common.c slectable based on
either CONFIG_MTD_NAND_QCOM or CONFIG_SPI_QPIC_SNAND
* Removed rawnand.h from qpic-common.h
* Removed partitions.h and rawnand.h form spi-qpic-snand.c
* Added qcom_nand_unalloc() in remove()
v5:
* Fixes nandbiterr issue
* Added raw_read() and raw_write() API
* Added qcom_ prefix to all the common API
* Removed register indirection
* Following tests for SPI-NAND devices passed
- mtd_oobtest
- mtd_pagetest
- mtd_readtest
- mtd_speedtest
- mtd_stresstest
- mtd_subpagetest
- mtd_nandbiterrs
- nandtest
- nanddump
- nandwrite
- nandbiterr -i
- mtd erase
- mtd write
- dd
- hexddump
v4:
* In this patch series fixes kernel doc for all the cmmon api
* Also fixes dm-binding commit message
* Fix qpic_common.c compilation based on config
v3:
* In this patch series fixes multiple things like
added clock-name, added _alloc_controller api instead
of alloc_master, made common apis more generic etc.
* Addressed all the comment from v2 patch series
v2:
* https://lore.kernel.org/linux-arm-msm/20240215134856.1313239-1-quic_mdalam@quicinc.com/
* In this series of patchs we have added basic working QPIC SPI NAND
driver with READ, WRITE, ERASE etc functionality
* Addressed all the comments given in RFC [v1] patch
v1:
* https://lore.kernel.org/linux-arm-msm/20231031120307.1600689-1-quic_mdalam@quicinc.com/
Md Sadre Alam (8):
spi: dt-bindings: Introduce qcom,spi-qpic-snand
mtd: rawnand: qcom: cleanup qcom_nandc driver
mtd: rawnand: qcom: Add qcom prefix to common api
mtd: nand: Add qpic_common API file
mtd: rawnand: qcom: use FIELD_PREP and GENMASK
spi: spi-qpic: add driver for QCOM SPI NAND flash Interface
arm64: dts: qcom: ipq9574: Add SPI nand support
arm64: dts: qcom: ipq9574: Remove eMMC node
.../bindings/spi/qcom,spi-qpic-snand.yaml | 83 +
.../boot/dts/qcom/ipq9574-rdp-common.dtsi | 43 +
arch/arm64/boot/dts/qcom/ipq9574-rdp433.dts | 12 -
arch/arm64/boot/dts/qcom/ipq9574.dtsi | 27 +
drivers/mtd/nand/Makefile | 6 +-
drivers/mtd/nand/qpic_common.c | 759 +++++++
drivers/mtd/nand/raw/qcom_nandc.c | 1773 +++--------------
drivers/spi/Kconfig | 9 +
drivers/spi/Makefile | 1 +
drivers/spi/spi-qpic-snand.c | 1633 +++++++++++++++
include/linux/mtd/nand-qpic-common.h | 482 +++++
11 files changed, 3370 insertions(+), 1458 deletions(-)
create mode 100644 Documentation/devicetree/bindings/spi/qcom,spi-qpic-snand.yaml
create mode 100644 drivers/mtd/nand/qpic_common.c
create mode 100644 drivers/spi/spi-qpic-snand.c
create mode 100644 include/linux/mtd/nand-qpic-common.h
--
2.34.1
On Wed, 20 Nov 2024 14:44:58 +0530, Md Sadre Alam wrote:
> v14:
> * Updated commit message
> * Fix spelling mistake
> * Remove "inline" from multiple APIs from qcom_nandc.c file
> * Move '|' in qcom_param_page_type_exec() APIs at the end of line
>
> [...]
Applied to mtd/6.13-rc1/qcom-reorg-for-spi-6.14, thanks!
[2/8] mtd: rawnand: qcom: cleanup qcom_nandc driver
commit: 8c52932da5e6756fa66f52f0720da283fba13aa6
[3/8] mtd: rawnand: qcom: Add qcom prefix to common api
commit: 1d479f5b345e0c3650fec4dddeef9fc6fab30c8b
[4/8] mtd: nand: Add qpic_common API file
commit: fdf3ee5c6e5278dab4f60b998b47ed2d510bf80f
[5/8] mtd: rawnand: qcom: use FIELD_PREP and GENMASK
commit: 0c08080fd71cd5dd59643104b39d3c89d793ab3c
Patche(s) will be available within hours on linux-mtd.
Kind regards,
Miquèl
Hi Marc, On 20/11/2024 at 14:44:58 +0530, Md Sadre Alam <quic_mdalam@quicinc.com> wrote: > v14: > * Updated commit message > * Fix spelling mistake > * Remove "inline" from multiple APIs from qcom_nandc.c file > * Move '|' in qcom_param_page_type_exec() APIs at the end of line I guess it is now time to move on, I can apply patches 2-5 and share an immutable tag. However, due to the frequent inconsistencies observed during the lifetime of this patchset, we might be slightly more conservative than usual and split the patches over two kernel releases. I fear there might be annoying fixes on the mtd side needed because of some side effects. Without these, the spi tree might have broken qcom support for several weeks. What do you think? Cheers, Miquèl
Hi Mark, >> v14: >> * Updated commit message >> * Fix spelling mistake >> * Remove "inline" from multiple APIs from qcom_nandc.c file >> * Move '|' in qcom_param_page_type_exec() APIs at the end of line > > I guess it is now time to move on, I can apply patches 2-5 and share an > immutable tag. Do you want an immutable tag or will you wait the next cycle to apply the spi patches? Thanks, Miquèl > However, due to the frequent inconsistencies observed > during the lifetime of this patchset, we might be slightly more > conservative than usual and split the patches over two kernel > releases. I fear there might be annoying fixes on the mtd side needed > because of some side effects. Without these, the spi tree might have > broken qcom support for several weeks. What do you think? > > Cheers, > Miquèl
On 12/24/2024 12:44 AM, Miquel Raynal wrote: > Hi Mark, > >>> v14: >>> * Updated commit message >>> * Fix spelling mistake >>> * Remove "inline" from multiple APIs from qcom_nandc.c file >>> * Move '|' in qcom_param_page_type_exec() APIs at the end of line >> >> I guess it is now time to move on, I can apply patches 2-5 and share an >> immutable tag. > > Do you want an immutable tag or will you wait the next cycle to apply > the spi patches? Please share the tag. Will apply the remaining patches (and resolve conflicts, if any) and ensure they work as expected. Thanks Alam. >> However, due to the frequent inconsistencies observed >> during the lifetime of this patchset, we might be slightly more >> conservative than usual and split the patches over two kernel >> releases. I fear there might be annoying fixes on the mtd side needed >> because of some side effects. Without these, the spi tree might have >> broken qcom support for several weeks. What do you think? >> >> Cheers, >> Miquèl
On 12/2/2024 10:27 PM, Miquel Raynal wrote: > Hi Marc, > > On 20/11/2024 at 14:44:58 +0530, Md Sadre Alam <quic_mdalam@quicinc.com> wrote: > >> v14: >> * Updated commit message >> * Fix spelling mistake >> * Remove "inline" from multiple APIs from qcom_nandc.c file >> * Move '|' in qcom_param_page_type_exec() APIs at the end of line > > I guess it is now time to move on, I can apply patches 2-5 and share an > immutable tag. However, due to the frequent inconsistencies observed > during the lifetime of this patchset, we might be slightly more > conservative than usual and split the patches over two kernel > releases. I fear there might be annoying fixes on the mtd side needed > because of some side effects. Without these, the spi tree might have > broken qcom support for several weeks. What do you think? Sorry for the delayed response. I'm fine with merging patches 2 to 5. I tested them on today's linux-next, and the driver performed as expected. > > Cheers, > Miquèl
© 2016 - 2026 Red Hat, Inc.