public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Vignesh R <vigneshr@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 00/20] SF: Migrate to Linux SPI NOR framework
Date: Tue, 29 Jan 2019 11:19:47 +0530	[thread overview]
Message-ID: <20190129055007.17376-1-vigneshr@ti.com> (raw)

Here is the v3 of SPI NOR migration(github branch at [1]). I have
retained Tested-by from v2 as this is just re split of patches and
minor fixups.

Travis ci reports all green.

Change log:
Since v2:
Split sync up patches into smaller versions so that its easier for review.
Address comments by Jagan and Simon Goldschmidt on v2.
Make SPI_FLASH_TINY(read only SF stack)  as default for SPL build to
offset against size increase due to new code.

Since v1:
Remove #ifindef __UBOOT__
Add back BAR support, but dont enable as default for all platform (see
10/11 for more details)
Enable SPI_FLASH_TINY on boards where there is SPL size constraint as
seen on travis ci builds.
Drop sf_mtd changes for now as it seems to cause issues.
v1: https://patchwork.ozlabs.org/cover/1012146/

Since RFC v2:
Fix issues reported by Simon Goldschmidt wrt 4 use of byte addressing opcode
Fix issues in compiling SFDP code
Re organize file names and Makefile to simply spi-nor-tiny inclusion
Remove SPI_FLASH_BAR and SF_DUAL_FLASH as these are no longer used
RFC v2: https://patchwork.ozlabs.org/cover/1007589/

Since RFC v1:
Add lightweight SPI flash stack for boards with SPL size constraints
Provide non DM version of spi-mem
Fix build issues on different platforms as reported by travis-ci on v1

RFC v1: https://patchwork.ozlabs.org/cover/1004689/

Background:

U-Boot SPI NOR support (sf layer) is quite outdated as it does not
support 4 byte addressing opcodes, SFDP table parsing and different types of
quad mode enable sequences. Many newer flashes no longer support BANK
registers used by sf layer to a access >16MB space.
Also, many SPI controllers have special MMIO interfaces which provide
accelerated read/write access but require knowledge of flash parameters
to make use of it. Recent spi-mem layer provides a way to support such
flashes but sf layer isn't using that.
This patch series syncs SPI NOR framework from Linux v4.19. It also adds
spi-mem support on top.
So, we gain 4byte addressing support and SFDP support. This makes
migrating to U-Boot MTD framework easier.

Tested with few Spansion, micron and macronix flashes with TI's dra7xx,
k2g, am43xx EVMs. I dont have access to flashes from other vendors. So,
I would greatly appreciate testing on other platforms. Complete series
with dependencies here[1]

For clean build on some platforms, depends on CONFIG_SPI_FLASH migration
to defconfigs [2]

[1] https://github.com/r-vignesh/u-boot.git  branch: spi-nor-mig-patch-v3
[2] https://patchwork.ozlabs.org/patch/1007485/

Vignesh R (20):
  configs: Move CONFIG_SPI_FLASH into defconfigs
  bitops: Fix GENMASK definition for Sandbox
  spi: spi-mem: Allow use of spi_mem_exec_op for all SPI modes
  spi: spi-mem: Extend spi_mem_adjust_op_size() to honor max xfer size
  spi: spi-mem: Claim SPI bus before spi mem access
  spi: Add non DM version of SPI_MEM
  sh: bitops: add hweight*() macros
  mtd: spi: Port SPI NOR framework from Linux
  mtd: spi: spi-nor-core: Add SPI MEM support
  mtd: spi: spi-nor-core: Add 4 Byte addressing support
  mtd: spi: spi-nor-core: Add SFDP support
  mtd: spi: spi-nor-core: Add back U-Boot specific features
  mtd: spi: sf_probe: Add "jedec,spi-nor" compatible string
  mtd: spi: Switch to new SPI NOR framework
  mtd: spi: Remove unused files
  mtd: spi: Add lightweight SPI flash stack for SPL
  spl: Kconfig: Enable SPI_FLASH_TINY by default for SPL
  configs: Remove SF_DUAL_FLASH
  configs: Don't use SPI_FLASH_BAR as default
  MAINTAINERS: Add an entry for SPI NOR

 MAINTAINERS                                   |    9 +
 arch/arm/mach-omap2/am33xx/Kconfig            |    1 -
 arch/sh/include/asm/bitops.h                  |    4 +
 common/spl/Kconfig                            |   23 +-
 configs/alt_defconfig                         |    1 -
 configs/am57xx_evm_defconfig                  |    1 -
 configs/am57xx_hs_evm_defconfig               |    1 -
 configs/ap121_defconfig                       |    1 -
 configs/ap143_defconfig                       |    1 -
 configs/avnet_ultra96_rev1_defconfig          |    1 -
 configs/axs101_defconfig                      |    1 -
 configs/axs103_defconfig                      |    1 -
 configs/bg0900_defconfig                      |    1 -
 configs/blanche_defconfig                     |    1 -
 configs/cgtqmx6eval_defconfig                 |    1 +
 configs/chromebit_mickey_defconfig            |    1 +
 configs/chromebook_jerry_defconfig            |    1 +
 configs/chromebook_minnie_defconfig           |    1 +
 configs/cl-som-am57x_defconfig                |    1 -
 configs/clearfog_defconfig                    |    1 -
 configs/cm_t43_defconfig                      |    1 -
 configs/db-88f6820-amc_defconfig              |    1 -
 configs/display5_defconfig                    |    1 -
 configs/display5_factory_defconfig            |    1 -
 configs/dra7xx_evm_defconfig                  |    1 -
 configs/dra7xx_hs_evm_defconfig               |    1 -
 configs/ds109_defconfig                       |    1 -
 configs/ds414_defconfig                       |    1 -
 configs/evb-rk3036_defconfig                  |    1 +
 configs/evb-rk3128_defconfig                  |    1 +
 configs/evb-rk3288_defconfig                  |    1 +
 configs/evb-rk3328_defconfig                  |    1 +
 configs/evb-rv1108_defconfig                  |    1 -
 configs/fennec-rk3288_defconfig               |    1 +
 configs/firefly-rk3288_defconfig              |    1 +
 configs/gose_defconfig                        |    1 -
 configs/helios4_defconfig                     |    1 -
 configs/k2g_evm_defconfig                     |    1 -
 configs/k2g_hs_evm_defconfig                  |    1 -
 configs/koelsch_defconfig                     |    1 -
 configs/kylin-rk3036_defconfig                |    1 +
 configs/lager_defconfig                       |    1 -
 configs/ls2080aqds_SECURE_BOOT_defconfig      |    1 +
 configs/ls2080aqds_defconfig                  |    1 +
 configs/ls2080aqds_nand_defconfig             |    1 +
 configs/ls2080aqds_qspi_defconfig             |    1 +
 configs/ls2080aqds_sdcard_defconfig           |    1 +
 configs/maxbcm_defconfig                      |    1 -
 configs/miqi-rk3288_defconfig                 |    1 +
 configs/mt7629_rfb_defconfig                  |    1 -
 configs/mx6sxsabreauto_defconfig              |    1 -
 configs/mx6sxsabresd_defconfig                |    1 -
 configs/mx6ul_14x14_evk_defconfig             |    1 -
 configs/mx6ul_9x9_evk_defconfig               |    1 -
 configs/mx6ull_14x14_evk_defconfig            |    1 -
 configs/mx6ull_14x14_evk_plugin_defconfig     |    1 -
 configs/mx7dsabresd_qspi_defconfig            |    1 -
 configs/phycore-rk3288_defconfig              |    1 +
 configs/popmetal-rk3288_defconfig             |    1 +
 configs/porter_defconfig                      |    1 -
 configs/r8a77970_eagle_defconfig              |    1 -
 configs/rock2_defconfig                       |    1 +
 configs/rock_defconfig                        |    1 +
 configs/silk_defconfig                        |    1 -
 configs/socfpga_arria5_defconfig              |    1 -
 configs/socfpga_cyclone5_defconfig            |    1 -
 configs/socfpga_is1_defconfig                 |    1 -
 configs/socfpga_sockit_defconfig              |    1 -
 configs/socfpga_socrates_defconfig            |    1 -
 configs/socfpga_sr1500_defconfig              |    1 -
 configs/socfpga_stratix10_defconfig           |    1 -
 configs/stout_defconfig                       |    1 -
 configs/tinker-rk3288_defconfig               |    1 +
 configs/topic_miami_defconfig                 |    1 -
 configs/topic_miamilite_defconfig             |    2 -
 configs/topic_miamiplus_defconfig             |    2 -
 configs/turris_omnia_defconfig                |    1 +
 configs/vyasa-rk3288_defconfig                |    1 +
 configs/xilinx_versal_virt_defconfig          |    1 -
 configs/xilinx_zynqmp_mini_qspi_defconfig     |    2 -
 configs/xilinx_zynqmp_zc1232_revA_defconfig   |    2 -
 configs/xilinx_zynqmp_zc1254_revA_defconfig   |    2 -
 configs/xilinx_zynqmp_zc1275_revA_defconfig   |    2 -
 configs/xilinx_zynqmp_zc1275_revB_defconfig   |    2 -
 .../xilinx_zynqmp_zc1751_xm015_dc1_defconfig  |    2 -
 .../xilinx_zynqmp_zc1751_xm016_dc2_defconfig  |    1 -
 .../xilinx_zynqmp_zc1751_xm018_dc4_defconfig  |    2 -
 configs/xilinx_zynqmp_zcu100_revC_defconfig   |    1 -
 configs/xilinx_zynqmp_zcu102_rev1_0_defconfig |    2 -
 configs/xilinx_zynqmp_zcu102_revA_defconfig   |    2 -
 configs/xilinx_zynqmp_zcu102_revB_defconfig   |    2 -
 configs/xilinx_zynqmp_zcu104_revA_defconfig   |    2 -
 configs/xilinx_zynqmp_zcu104_revC_defconfig   |    2 -
 configs/xilinx_zynqmp_zcu106_revA_defconfig   |    2 -
 configs/xilinx_zynqmp_zcu111_revA_defconfig   |    1 -
 configs/zynq_cc108_defconfig                  |    1 -
 configs/zynq_cse_qspi_defconfig               |    1 -
 configs/zynq_dlc20_rev1_0_defconfig           |    1 -
 configs/zynq_microzed_defconfig               |    1 -
 configs/zynq_minized_defconfig                |    1 -
 configs/zynq_z_turn_defconfig                 |    1 -
 configs/zynq_zc702_defconfig                  |    1 -
 configs/zynq_zc706_defconfig                  |    1 -
 configs/zynq_zc770_xm010_defconfig            |    1 -
 configs/zynq_zc770_xm013_defconfig            |    1 -
 configs/zynq_zed_defconfig                    |    1 -
 configs/zynq_zybo_defconfig                   |    1 -
 configs/zynq_zybo_z7_defconfig                |    1 -
 doc/SPI/README.dual-flash                     |   92 -
 doc/SPI/README.ti_qspi_dra_test               |    1 -
 drivers/mtd/spi/Kconfig                       |   16 +-
 drivers/mtd/spi/Makefile                      |   12 +-
 drivers/mtd/spi/sandbox.c                     |   36 +-
 drivers/mtd/spi/sf_dataflash.c                |   11 +-
 drivers/mtd/spi/sf_internal.h                 |  225 +-
 drivers/mtd/spi/sf_probe.c                    |   33 +-
 drivers/mtd/spi/spi-nor-core.c                | 2420 +++++++++++++++++
 drivers/mtd/spi/spi-nor-ids.c                 |  297 ++
 drivers/mtd/spi/spi-nor-tiny.c                |  810 ++++++
 drivers/mtd/spi/spi_flash.c                   | 1337 ---------
 drivers/mtd/spi/spi_flash_ids.c               |  211 --
 drivers/spi/Kconfig                           |    9 +-
 drivers/spi/Makefile                          |    1 +
 drivers/spi/spi-mem-nodm.c                    |  105 +
 drivers/spi/spi-mem.c                         |   41 +-
 drivers/spi/stm32_qspi.c                      |    4 +-
 include/configs/T102xQDS.h                    |    1 -
 include/configs/T102xRDB.h                    |    1 -
 include/configs/T104xRDB.h                    |    1 -
 include/configs/T208xQDS.h                    |    1 -
 include/configs/T208xRDB.h                    |    1 -
 include/configs/cgtqmx6eval.h                 |    1 -
 include/configs/gw_ventana.h                  |    1 -
 include/configs/km/kmp204x-common.h           |    1 -
 include/configs/ls1021aiot.h                  |    1 -
 include/configs/ls2080aqds.h                  |    2 -
 include/configs/rk3036_common.h               |    1 -
 include/configs/rk3128_common.h               |    1 -
 include/configs/rk3188_common.h               |    1 -
 include/configs/rk3288_common.h               |    1 -
 include/configs/rk3328_common.h               |    1 -
 include/configs/socfpga_stratix10_socdk.h     |    1 -
 include/configs/turris_omnia.h                |    1 -
 include/linux/bitops.h                        |    5 +
 include/linux/mtd/cfi.h                       |   32 +
 include/linux/mtd/spi-nor.h                   |  419 +++
 include/spi_flash.h                           |  105 +-
 147 files changed, 4313 insertions(+), 2083 deletions(-)
 delete mode 100644 doc/SPI/README.dual-flash
 create mode 100644 drivers/mtd/spi/spi-nor-core.c
 create mode 100644 drivers/mtd/spi/spi-nor-ids.c
 create mode 100644 drivers/mtd/spi/spi-nor-tiny.c
 delete mode 100644 drivers/mtd/spi/spi_flash.c
 delete mode 100644 drivers/mtd/spi/spi_flash_ids.c
 create mode 100644 drivers/spi/spi-mem-nodm.c
 create mode 100644 include/linux/mtd/cfi.h
 create mode 100644 include/linux/mtd/spi-nor.h

-- 
2.20.1

             reply	other threads:[~2019-01-29  5:49 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-29  5:49 Vignesh R [this message]
2019-01-29  5:49 ` [U-Boot] [PATCH v3 01/20] configs: Move CONFIG_SPI_FLASH into defconfigs Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 02/20] bitops: Fix GENMASK definition for Sandbox Vignesh R
2019-01-31  0:41   ` Simon Glass
2019-01-31 13:34     ` Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 03/20] spi: spi-mem: Allow use of spi_mem_exec_op for all SPI modes Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 04/20] spi: spi-mem: Extend spi_mem_adjust_op_size() to honor max xfer size Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 05/20] spi: spi-mem: Claim SPI bus before spi mem access Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 06/20] spi: Add non DM version of SPI_MEM Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 07/20] sh: bitops: add hweight*() macros Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 08/20] mtd: spi: Port SPI NOR framework from Linux Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 09/20] mtd: spi: spi-nor-core: Add SPI MEM support Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 10/20] mtd: spi: spi-nor-core: Add 4 Byte addressing support Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 11/20] mtd: spi: spi-nor-core: Add SFDP support Vignesh R
2019-01-29  5:49 ` [U-Boot] [PATCH v3 12/20] mtd: spi: spi-nor-core: Add back U-Boot specific features Vignesh R
2019-01-29  5:50 ` [U-Boot] [PATCH v3 13/20] mtd: spi: sf_probe: Add "jedec, spi-nor" compatible string Vignesh R
2019-01-29  5:50 ` [U-Boot] [PATCH v3 14/20] mtd: spi: Switch to new SPI NOR framework Vignesh R
2019-01-31 12:23   ` Jagan Teki
2019-01-31 12:39     ` Vignesh R
2019-01-31 12:39       ` Jagan Teki
2019-01-31 12:55         ` Vignesh R
2019-01-31 12:57           ` Jagan Teki
2019-01-29  5:50 ` [U-Boot] [PATCH v3 15/20] mtd: spi: Remove unused files Vignesh R
2019-01-29  5:50 ` [U-Boot] [PATCH v3 16/20] mtd: spi: Add lightweight SPI flash stack for SPL Vignesh R
2019-01-31 12:06   ` Jagan Teki
2019-01-31 17:51     ` Vignesh R
2019-02-01 15:48       ` Jagan Teki
2019-02-01 17:04         ` Vignesh R
2019-02-02 13:12           ` Jagan Teki
2019-01-29  5:50 ` [U-Boot] [PATCH v3 17/20] spl: Kconfig: Enable SPI_FLASH_TINY by default " Vignesh R
2019-01-29  5:50 ` [U-Boot] [PATCH v3 18/20] configs: Remove SF_DUAL_FLASH Vignesh R
2019-01-29  5:50 ` [U-Boot] [PATCH v3 19/20] configs: Don't use SPI_FLASH_BAR as default Vignesh R
2019-01-31 13:18   ` Jagan Teki
2019-01-31 13:33     ` Vignesh R
2019-01-31 13:36       ` Jagan Teki
2019-01-31 13:47         ` Vignesh R
2019-01-31 13:50           ` Jagan Teki
2019-01-31 17:35             ` Vignesh R
2019-02-01 15:54               ` Jagan Teki
2019-02-01 17:08                 ` Vignesh R
2019-02-02 13:10                   ` Jagan Teki
2019-01-29  5:50 ` [U-Boot] [PATCH v3 20/20] MAINTAINERS: Add an entry for SPI NOR Vignesh R
2019-01-29  8:15 ` [U-Boot] [PATCH v3 00/20] SF: Migrate to Linux SPI NOR framework Simon Goldschmidt
2019-01-29 11:56   ` Vignesh R
2019-01-29 11:58     ` Simon Goldschmidt
2019-01-29 12:25 ` Tom Rini
2019-01-31 14:40 ` Jagan Teki
2019-01-31 14:42   ` Tom Rini
2019-01-31 14:45     ` Jagan Teki
2019-02-01  8:27       ` Vignesh R
2019-02-04 19:03         ` Jagan Teki
2019-01-31 14:48     ` Simon Goldschmidt
2019-01-31 14:51       ` Jagan Teki
2019-01-31 14:54         ` Tom Rini
2019-01-31 14:58           ` Simon Goldschmidt
2019-01-31 15:02             ` Tom Rini
2019-01-31 15:08               ` Simon Goldschmidt
2019-01-31 15:00           ` Jagan Teki

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=20190129055007.17376-1-vigneshr@ti.com \
    --to=vigneshr@ti.com \
    --cc=u-boot@lists.denx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox