diff mbox series

[PATCHv4,3/3] spi: Convert CONFIG_DM_SPI* to CONFIG_$(SPL_TPL_)DM_SPI*

Message ID 20200602131108.19609-4-Zhiqiang.Hou@nxp.com
State Superseded
Headers show
Series spi: Split CONFIG_DM_SPI* to CONFIG_{SPL_TPL}DM_SPI* | expand

Commit Message

Zhiqiang Hou June 2, 2020, 1:11 p.m. UTC
From: Lukasz Majewski <lukma at denx.de>

This change allows more fine tuning of driver model based SPI support in
SPL and TPL. It is now possible to explicitly enable/disable the DM_SPI
support in SPL and TPL via Kconfig option.

Before this change it was necessary to use:
    /* SPI Flash Configs */
    #if defined(CONFIG_SPL_BUILD)
    #undef CONFIG_DM_SPI
    #undef CONFIG_DM_SPI_FLASH
    #undef CONFIG_SPI_FLASH_MTD
    #endif

in the ./include/configs/<board>.h, which is error prone and shall be
avoided when we strive to switch to Kconfig.

The goal of this patch:

Provide distinction for DM_SPI support in both U-Boot proper and SPL (TPL).
Valid use case is when U-Boot proper wants to use DM_SPI, but SPL must
still support non DM driver.

Another use case is the conversion of non DM/DTS SPI driver to support
DM/DTS. When such driver needs to work in both SPL and U-Boot proper, the
distinction is needed in Kconfig (also if SPL version of the driver
supports OF_PLATDATA).

In the end of the day one would have to support following use cases (in
single driver file - e.g. mxs_spi.c):

- U-Boot proper driver supporting DT/DTS
- U-Boot proper driver without DT/DTS support (deprecated)
- SPL driver without DT/DTS support
- SPL (and TPL) driver with DT/DTS (when the SoC has enough resources to
  run full blown DT/DTS)
- SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have constrained
  environment with no fitImage and OF_LIBFDT support).

Some boards do require SPI support (with DM) in SPL (TPL) and some only
have DM_SPI{_FLASH} defined to allow compiling SPL.

This patch converts #ifdef CONFIG_DM_SPI* to #if CONFIG_IS_ENABLED(DM_SPI)
and provides corresponding defines in Kconfig.

Signed-off-by: Lukasz Majewski <lukma at denx.de>
Tested-by: Adam Ford <aford173 at gmail.com> #da850-evm
Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
---
V4:
 - Rebase the patch and remove SPL_DM_SPI from target ls1046 boards.

 arch/arm/Kconfig                            | 11 +++++++++++
 board/l+g/vinco/vinco.c                     |  4 ++--
 cmd/sf.c                                    |  4 ++--
 cmd/spi.c                                   |  6 +++---
 common/spl/Kconfig                          | 20 ++++++++++++++++++++
 configs/am57xx_evm_defconfig                |  2 ++
 configs/am57xx_hs_evm_defconfig             |  2 ++
 configs/am57xx_hs_evm_usb_defconfig         |  2 ++
 configs/axm_defconfig                       |  2 ++
 configs/chromebook_link64_defconfig         |  2 ++
 configs/chromebook_samus_tpl_defconfig      |  4 ++++
 configs/dra7xx_evm_defconfig                |  2 ++
 configs/dra7xx_hs_evm_defconfig             |  2 ++
 configs/dra7xx_hs_evm_usb_defconfig         |  2 ++
 configs/j721e_evm_a72_defconfig             |  2 ++
 configs/j721e_evm_r5_defconfig              |  2 ++
 configs/ls1021aiot_qspi_defconfig           |  2 ++
 configs/ls1021aiot_sdcard_defconfig         |  2 ++
 configs/ls1021aqds_qspi_defconfig           |  1 +
 configs/ls1021aqds_sdcard_qspi_defconfig    |  1 +
 configs/ls1021atwr_qspi_defconfig           |  1 +
 configs/sama5d2_xplained_spiflash_defconfig |  2 ++
 configs/sama5d3xek_spiflash_defconfig       |  7 ++++---
 configs/sama5d4_xplained_spiflash_defconfig |  2 ++
 configs/sama5d4ek_spiflash_defconfig        |  2 ++
 configs/stm32mp15_basic_defconfig           |  2 ++
 configs/taurus_defconfig                    |  2 ++
 drivers/mtd/spi/Makefile                    |  4 ++--
 drivers/mtd/spi/sf_probe.c                  |  2 +-
 drivers/net/fm/fm.c                         |  4 ++--
 drivers/spi/Makefile                        |  2 +-
 drivers/spi/atmel_spi.c                     |  4 ++--
 drivers/spi/davinci_spi.c                   |  6 +++---
 drivers/spi/fsl_dspi.c                      |  5 +++--
 drivers/spi/kirkwood_spi.c                  |  2 +-
 drivers/spi/mxc_spi.c                       |  6 +++---
 drivers/spi/omap3_spi.c                     |  4 ++--
 drivers/spi/sh_qspi.c                       |  4 ++--
 env/sf.c                                    |  2 +-
 include/spi.h                               |  8 ++++----
 include/spi_flash.h                         |  2 +-
 test/dm/spi.c                               |  2 +-
 42 files changed, 112 insertions(+), 38 deletions(-)

Comments

Jagan Teki June 2, 2020, 1:29 p.m. UTC | #1
On Tue, Jun 2, 2020 at 6:47 PM Zhiqiang Hou <Zhiqiang.Hou at nxp.com> wrote:
>
> From: Lukasz Majewski <lukma at denx.de>
>
> This change allows more fine tuning of driver model based SPI support in
> SPL and TPL. It is now possible to explicitly enable/disable the DM_SPI
> support in SPL and TPL via Kconfig option.
>
> Before this change it was necessary to use:
>     /* SPI Flash Configs */
>     #if defined(CONFIG_SPL_BUILD)
>     #undef CONFIG_DM_SPI
>     #undef CONFIG_DM_SPI_FLASH
>     #undef CONFIG_SPI_FLASH_MTD
>     #endif
>
> in the ./include/configs/<board>.h, which is error prone and shall be
> avoided when we strive to switch to Kconfig.
>
> The goal of this patch:
>
> Provide distinction for DM_SPI support in both U-Boot proper and SPL (TPL).
> Valid use case is when U-Boot proper wants to use DM_SPI, but SPL must
> still support non DM driver.
>
> Another use case is the conversion of non DM/DTS SPI driver to support
> DM/DTS. When such driver needs to work in both SPL and U-Boot proper, the
> distinction is needed in Kconfig (also if SPL version of the driver
> supports OF_PLATDATA).
>
> In the end of the day one would have to support following use cases (in
> single driver file - e.g. mxs_spi.c):
>
> - U-Boot proper driver supporting DT/DTS
> - U-Boot proper driver without DT/DTS support (deprecated)
> - SPL driver without DT/DTS support
> - SPL (and TPL) driver with DT/DTS (when the SoC has enough resources to
>   run full blown DT/DTS)
> - SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have constrained
>   environment with no fitImage and OF_LIBFDT support).
>
> Some boards do require SPI support (with DM) in SPL (TPL) and some only
> have DM_SPI{_FLASH} defined to allow compiling SPL.
>
> This patch converts #ifdef CONFIG_DM_SPI* to #if CONFIG_IS_ENABLED(DM_SPI)
> and provides corresponding defines in Kconfig.
>
> Signed-off-by: Lukasz Majewski <lukma at denx.de>
> Tested-by: Adam Ford <aford173 at gmail.com> #da850-evm
> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> ---
> V4:
>  - Rebase the patch and remove SPL_DM_SPI from target ls1046 boards.
>
>  arch/arm/Kconfig                            | 11 +++++++++++
>  board/l+g/vinco/vinco.c                     |  4 ++--
>  cmd/sf.c                                    |  4 ++--
>  cmd/spi.c                                   |  6 +++---
>  common/spl/Kconfig                          | 20 ++++++++++++++++++++
>  configs/am57xx_evm_defconfig                |  2 ++
>  configs/am57xx_hs_evm_defconfig             |  2 ++
>  configs/am57xx_hs_evm_usb_defconfig         |  2 ++
>  configs/axm_defconfig                       |  2 ++
>  configs/chromebook_link64_defconfig         |  2 ++
>  configs/chromebook_samus_tpl_defconfig      |  4 ++++
>  configs/dra7xx_evm_defconfig                |  2 ++
>  configs/dra7xx_hs_evm_defconfig             |  2 ++
>  configs/dra7xx_hs_evm_usb_defconfig         |  2 ++
>  configs/j721e_evm_a72_defconfig             |  2 ++
>  configs/j721e_evm_r5_defconfig              |  2 ++
>  configs/ls1021aiot_qspi_defconfig           |  2 ++
>  configs/ls1021aiot_sdcard_defconfig         |  2 ++
>  configs/ls1021aqds_qspi_defconfig           |  1 +
>  configs/ls1021aqds_sdcard_qspi_defconfig    |  1 +
>  configs/ls1021atwr_qspi_defconfig           |  1 +
>  configs/sama5d2_xplained_spiflash_defconfig |  2 ++
>  configs/sama5d3xek_spiflash_defconfig       |  7 ++++---
>  configs/sama5d4_xplained_spiflash_defconfig |  2 ++
>  configs/sama5d4ek_spiflash_defconfig        |  2 ++
>  configs/stm32mp15_basic_defconfig           |  2 ++
>  configs/taurus_defconfig                    |  2 ++
>  drivers/mtd/spi/Makefile                    |  4 ++--
>  drivers/mtd/spi/sf_probe.c                  |  2 +-
>  drivers/net/fm/fm.c                         |  4 ++--
>  drivers/spi/Makefile                        |  2 +-
>  drivers/spi/atmel_spi.c                     |  4 ++--
>  drivers/spi/davinci_spi.c                   |  6 +++---
>  drivers/spi/fsl_dspi.c                      |  5 +++--
>  drivers/spi/kirkwood_spi.c                  |  2 +-
>  drivers/spi/mxc_spi.c                       |  6 +++---
>  drivers/spi/omap3_spi.c                     |  4 ++--

nondm code on most of the driver will remove in the next version, So I
didn't see any usecase of this conversion here.

Jagan.
Tom Rini June 2, 2020, 6:27 p.m. UTC | #2
On Tue, Jun 02, 2020 at 06:59:21PM +0530, Jagan Teki wrote:
> On Tue, Jun 2, 2020 at 6:47 PM Zhiqiang Hou <Zhiqiang.Hou at nxp.com> wrote:
> >
> > From: Lukasz Majewski <lukma at denx.de>
> >
> > This change allows more fine tuning of driver model based SPI support in
> > SPL and TPL. It is now possible to explicitly enable/disable the DM_SPI
> > support in SPL and TPL via Kconfig option.
> >
> > Before this change it was necessary to use:
> >     /* SPI Flash Configs */
> >     #if defined(CONFIG_SPL_BUILD)
> >     #undef CONFIG_DM_SPI
> >     #undef CONFIG_DM_SPI_FLASH
> >     #undef CONFIG_SPI_FLASH_MTD
> >     #endif
> >
> > in the ./include/configs/<board>.h, which is error prone and shall be
> > avoided when we strive to switch to Kconfig.
> >
> > The goal of this patch:
> >
> > Provide distinction for DM_SPI support in both U-Boot proper and SPL (TPL).
> > Valid use case is when U-Boot proper wants to use DM_SPI, but SPL must
> > still support non DM driver.
> >
> > Another use case is the conversion of non DM/DTS SPI driver to support
> > DM/DTS. When such driver needs to work in both SPL and U-Boot proper, the
> > distinction is needed in Kconfig (also if SPL version of the driver
> > supports OF_PLATDATA).
> >
> > In the end of the day one would have to support following use cases (in
> > single driver file - e.g. mxs_spi.c):
> >
> > - U-Boot proper driver supporting DT/DTS
> > - U-Boot proper driver without DT/DTS support (deprecated)
> > - SPL driver without DT/DTS support
> > - SPL (and TPL) driver with DT/DTS (when the SoC has enough resources to
> >   run full blown DT/DTS)
> > - SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have constrained
> >   environment with no fitImage and OF_LIBFDT support).
> >
> > Some boards do require SPI support (with DM) in SPL (TPL) and some only
> > have DM_SPI{_FLASH} defined to allow compiling SPL.
> >
> > This patch converts #ifdef CONFIG_DM_SPI* to #if CONFIG_IS_ENABLED(DM_SPI)
> > and provides corresponding defines in Kconfig.
> >
> > Signed-off-by: Lukasz Majewski <lukma at denx.de>
> > Tested-by: Adam Ford <aford173 at gmail.com> #da850-evm
> > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> > ---
> > V4:
> >  - Rebase the patch and remove SPL_DM_SPI from target ls1046 boards.
> >
> >  arch/arm/Kconfig                            | 11 +++++++++++
> >  board/l+g/vinco/vinco.c                     |  4 ++--
> >  cmd/sf.c                                    |  4 ++--
> >  cmd/spi.c                                   |  6 +++---
> >  common/spl/Kconfig                          | 20 ++++++++++++++++++++
> >  configs/am57xx_evm_defconfig                |  2 ++
> >  configs/am57xx_hs_evm_defconfig             |  2 ++
> >  configs/am57xx_hs_evm_usb_defconfig         |  2 ++
> >  configs/axm_defconfig                       |  2 ++
> >  configs/chromebook_link64_defconfig         |  2 ++
> >  configs/chromebook_samus_tpl_defconfig      |  4 ++++
> >  configs/dra7xx_evm_defconfig                |  2 ++
> >  configs/dra7xx_hs_evm_defconfig             |  2 ++
> >  configs/dra7xx_hs_evm_usb_defconfig         |  2 ++
> >  configs/j721e_evm_a72_defconfig             |  2 ++
> >  configs/j721e_evm_r5_defconfig              |  2 ++
> >  configs/ls1021aiot_qspi_defconfig           |  2 ++
> >  configs/ls1021aiot_sdcard_defconfig         |  2 ++
> >  configs/ls1021aqds_qspi_defconfig           |  1 +
> >  configs/ls1021aqds_sdcard_qspi_defconfig    |  1 +
> >  configs/ls1021atwr_qspi_defconfig           |  1 +
> >  configs/sama5d2_xplained_spiflash_defconfig |  2 ++
> >  configs/sama5d3xek_spiflash_defconfig       |  7 ++++---
> >  configs/sama5d4_xplained_spiflash_defconfig |  2 ++
> >  configs/sama5d4ek_spiflash_defconfig        |  2 ++
> >  configs/stm32mp15_basic_defconfig           |  2 ++
> >  configs/taurus_defconfig                    |  2 ++
> >  drivers/mtd/spi/Makefile                    |  4 ++--
> >  drivers/mtd/spi/sf_probe.c                  |  2 +-
> >  drivers/net/fm/fm.c                         |  4 ++--
> >  drivers/spi/Makefile                        |  2 +-
> >  drivers/spi/atmel_spi.c                     |  4 ++--
> >  drivers/spi/davinci_spi.c                   |  6 +++---
> >  drivers/spi/fsl_dspi.c                      |  5 +++--
> >  drivers/spi/kirkwood_spi.c                  |  2 +-
> >  drivers/spi/mxc_spi.c                       |  6 +++---
> >  drivers/spi/omap3_spi.c                     |  4 ++--
> 
> nondm code on most of the driver will remove in the next version, So I
> didn't see any usecase of this conversion here.

I think this is still the right direction to go in.  non-DM for SPL is
allowed and this is part of the logical steps needed for moving forward
with "now pull non-DM driver into own file for SPL" until the efforts to
make DM smaller still are ready.  So this series is on my list to test
and confirm doesn't change binary size on.
Jagan Teki June 2, 2020, 6:40 p.m. UTC | #3
On Tue, Jun 2, 2020 at 11:57 PM Tom Rini <trini at konsulko.com> wrote:
>
> On Tue, Jun 02, 2020 at 06:59:21PM +0530, Jagan Teki wrote:
> > On Tue, Jun 2, 2020 at 6:47 PM Zhiqiang Hou <Zhiqiang.Hou at nxp.com> wrote:
> > >
> > > From: Lukasz Majewski <lukma at denx.de>
> > >
> > > This change allows more fine tuning of driver model based SPI support in
> > > SPL and TPL. It is now possible to explicitly enable/disable the DM_SPI
> > > support in SPL and TPL via Kconfig option.
> > >
> > > Before this change it was necessary to use:
> > >     /* SPI Flash Configs */
> > >     #if defined(CONFIG_SPL_BUILD)
> > >     #undef CONFIG_DM_SPI
> > >     #undef CONFIG_DM_SPI_FLASH
> > >     #undef CONFIG_SPI_FLASH_MTD
> > >     #endif
> > >
> > > in the ./include/configs/<board>.h, which is error prone and shall be
> > > avoided when we strive to switch to Kconfig.
> > >
> > > The goal of this patch:
> > >
> > > Provide distinction for DM_SPI support in both U-Boot proper and SPL (TPL).
> > > Valid use case is when U-Boot proper wants to use DM_SPI, but SPL must
> > > still support non DM driver.
> > >
> > > Another use case is the conversion of non DM/DTS SPI driver to support
> > > DM/DTS. When such driver needs to work in both SPL and U-Boot proper, the
> > > distinction is needed in Kconfig (also if SPL version of the driver
> > > supports OF_PLATDATA).
> > >
> > > In the end of the day one would have to support following use cases (in
> > > single driver file - e.g. mxs_spi.c):
> > >
> > > - U-Boot proper driver supporting DT/DTS
> > > - U-Boot proper driver without DT/DTS support (deprecated)
> > > - SPL driver without DT/DTS support
> > > - SPL (and TPL) driver with DT/DTS (when the SoC has enough resources to
> > >   run full blown DT/DTS)
> > > - SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have constrained
> > >   environment with no fitImage and OF_LIBFDT support).
> > >
> > > Some boards do require SPI support (with DM) in SPL (TPL) and some only
> > > have DM_SPI{_FLASH} defined to allow compiling SPL.
> > >
> > > This patch converts #ifdef CONFIG_DM_SPI* to #if CONFIG_IS_ENABLED(DM_SPI)
> > > and provides corresponding defines in Kconfig.
> > >
> > > Signed-off-by: Lukasz Majewski <lukma at denx.de>
> > > Tested-by: Adam Ford <aford173 at gmail.com> #da850-evm
> > > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> > > ---
> > > V4:
> > >  - Rebase the patch and remove SPL_DM_SPI from target ls1046 boards.
> > >
> > >  arch/arm/Kconfig                            | 11 +++++++++++
> > >  board/l+g/vinco/vinco.c                     |  4 ++--
> > >  cmd/sf.c                                    |  4 ++--
> > >  cmd/spi.c                                   |  6 +++---
> > >  common/spl/Kconfig                          | 20 ++++++++++++++++++++
> > >  configs/am57xx_evm_defconfig                |  2 ++
> > >  configs/am57xx_hs_evm_defconfig             |  2 ++
> > >  configs/am57xx_hs_evm_usb_defconfig         |  2 ++
> > >  configs/axm_defconfig                       |  2 ++
> > >  configs/chromebook_link64_defconfig         |  2 ++
> > >  configs/chromebook_samus_tpl_defconfig      |  4 ++++
> > >  configs/dra7xx_evm_defconfig                |  2 ++
> > >  configs/dra7xx_hs_evm_defconfig             |  2 ++
> > >  configs/dra7xx_hs_evm_usb_defconfig         |  2 ++
> > >  configs/j721e_evm_a72_defconfig             |  2 ++
> > >  configs/j721e_evm_r5_defconfig              |  2 ++
> > >  configs/ls1021aiot_qspi_defconfig           |  2 ++
> > >  configs/ls1021aiot_sdcard_defconfig         |  2 ++
> > >  configs/ls1021aqds_qspi_defconfig           |  1 +
> > >  configs/ls1021aqds_sdcard_qspi_defconfig    |  1 +
> > >  configs/ls1021atwr_qspi_defconfig           |  1 +
> > >  configs/sama5d2_xplained_spiflash_defconfig |  2 ++
> > >  configs/sama5d3xek_spiflash_defconfig       |  7 ++++---
> > >  configs/sama5d4_xplained_spiflash_defconfig |  2 ++
> > >  configs/sama5d4ek_spiflash_defconfig        |  2 ++
> > >  configs/stm32mp15_basic_defconfig           |  2 ++
> > >  configs/taurus_defconfig                    |  2 ++
> > >  drivers/mtd/spi/Makefile                    |  4 ++--
> > >  drivers/mtd/spi/sf_probe.c                  |  2 +-
> > >  drivers/net/fm/fm.c                         |  4 ++--
> > >  drivers/spi/Makefile                        |  2 +-
> > >  drivers/spi/atmel_spi.c                     |  4 ++--
> > >  drivers/spi/davinci_spi.c                   |  6 +++---
> > >  drivers/spi/fsl_dspi.c                      |  5 +++--
> > >  drivers/spi/kirkwood_spi.c                  |  2 +-
> > >  drivers/spi/mxc_spi.c                       |  6 +++---
> > >  drivers/spi/omap3_spi.c                     |  4 ++--
> >
> > nondm code on most of the driver will remove in the next version, So I
> > didn't see any usecase of this conversion here.
>
> I think this is still the right direction to go in.  non-DM for SPL is
> allowed and this is part of the logical steps needed for moving forward
> with "now pull non-DM driver into own file for SPL" until the efforts to
> make DM smaller still are ready.  So this series is on my list to test
> and confirm doesn't change binary size on.

Sorry, I can't do a similar task over the years, I'm saying about
nondm part of drivers which doesn't have any footprint issues? You may
be true for nondm part which has SPL size issues like mxc_spi,
sh_qspi, rest are fine to move. I'd remove those that part at max for
next MW.

Jagan.
Tom Rini June 2, 2020, 7:01 p.m. UTC | #4
On Wed, Jun 03, 2020 at 12:10:30AM +0530, Jagan Teki wrote:
> On Tue, Jun 2, 2020 at 11:57 PM Tom Rini <trini at konsulko.com> wrote:
> >
> > On Tue, Jun 02, 2020 at 06:59:21PM +0530, Jagan Teki wrote:
> > > On Tue, Jun 2, 2020 at 6:47 PM Zhiqiang Hou <Zhiqiang.Hou at nxp.com> wrote:
> > > >
> > > > From: Lukasz Majewski <lukma at denx.de>
> > > >
> > > > This change allows more fine tuning of driver model based SPI support in
> > > > SPL and TPL. It is now possible to explicitly enable/disable the DM_SPI
> > > > support in SPL and TPL via Kconfig option.
> > > >
> > > > Before this change it was necessary to use:
> > > >     /* SPI Flash Configs */
> > > >     #if defined(CONFIG_SPL_BUILD)
> > > >     #undef CONFIG_DM_SPI
> > > >     #undef CONFIG_DM_SPI_FLASH
> > > >     #undef CONFIG_SPI_FLASH_MTD
> > > >     #endif
> > > >
> > > > in the ./include/configs/<board>.h, which is error prone and shall be
> > > > avoided when we strive to switch to Kconfig.
> > > >
> > > > The goal of this patch:
> > > >
> > > > Provide distinction for DM_SPI support in both U-Boot proper and SPL (TPL).
> > > > Valid use case is when U-Boot proper wants to use DM_SPI, but SPL must
> > > > still support non DM driver.
> > > >
> > > > Another use case is the conversion of non DM/DTS SPI driver to support
> > > > DM/DTS. When such driver needs to work in both SPL and U-Boot proper, the
> > > > distinction is needed in Kconfig (also if SPL version of the driver
> > > > supports OF_PLATDATA).
> > > >
> > > > In the end of the day one would have to support following use cases (in
> > > > single driver file - e.g. mxs_spi.c):
> > > >
> > > > - U-Boot proper driver supporting DT/DTS
> > > > - U-Boot proper driver without DT/DTS support (deprecated)
> > > > - SPL driver without DT/DTS support
> > > > - SPL (and TPL) driver with DT/DTS (when the SoC has enough resources to
> > > >   run full blown DT/DTS)
> > > > - SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have constrained
> > > >   environment with no fitImage and OF_LIBFDT support).
> > > >
> > > > Some boards do require SPI support (with DM) in SPL (TPL) and some only
> > > > have DM_SPI{_FLASH} defined to allow compiling SPL.
> > > >
> > > > This patch converts #ifdef CONFIG_DM_SPI* to #if CONFIG_IS_ENABLED(DM_SPI)
> > > > and provides corresponding defines in Kconfig.
> > > >
> > > > Signed-off-by: Lukasz Majewski <lukma at denx.de>
> > > > Tested-by: Adam Ford <aford173 at gmail.com> #da850-evm
> > > > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> > > > ---
> > > > V4:
> > > >  - Rebase the patch and remove SPL_DM_SPI from target ls1046 boards.
> > > >
> > > >  arch/arm/Kconfig                            | 11 +++++++++++
> > > >  board/l+g/vinco/vinco.c                     |  4 ++--
> > > >  cmd/sf.c                                    |  4 ++--
> > > >  cmd/spi.c                                   |  6 +++---
> > > >  common/spl/Kconfig                          | 20 ++++++++++++++++++++
> > > >  configs/am57xx_evm_defconfig                |  2 ++
> > > >  configs/am57xx_hs_evm_defconfig             |  2 ++
> > > >  configs/am57xx_hs_evm_usb_defconfig         |  2 ++
> > > >  configs/axm_defconfig                       |  2 ++
> > > >  configs/chromebook_link64_defconfig         |  2 ++
> > > >  configs/chromebook_samus_tpl_defconfig      |  4 ++++
> > > >  configs/dra7xx_evm_defconfig                |  2 ++
> > > >  configs/dra7xx_hs_evm_defconfig             |  2 ++
> > > >  configs/dra7xx_hs_evm_usb_defconfig         |  2 ++
> > > >  configs/j721e_evm_a72_defconfig             |  2 ++
> > > >  configs/j721e_evm_r5_defconfig              |  2 ++
> > > >  configs/ls1021aiot_qspi_defconfig           |  2 ++
> > > >  configs/ls1021aiot_sdcard_defconfig         |  2 ++
> > > >  configs/ls1021aqds_qspi_defconfig           |  1 +
> > > >  configs/ls1021aqds_sdcard_qspi_defconfig    |  1 +
> > > >  configs/ls1021atwr_qspi_defconfig           |  1 +
> > > >  configs/sama5d2_xplained_spiflash_defconfig |  2 ++
> > > >  configs/sama5d3xek_spiflash_defconfig       |  7 ++++---
> > > >  configs/sama5d4_xplained_spiflash_defconfig |  2 ++
> > > >  configs/sama5d4ek_spiflash_defconfig        |  2 ++
> > > >  configs/stm32mp15_basic_defconfig           |  2 ++
> > > >  configs/taurus_defconfig                    |  2 ++
> > > >  drivers/mtd/spi/Makefile                    |  4 ++--
> > > >  drivers/mtd/spi/sf_probe.c                  |  2 +-
> > > >  drivers/net/fm/fm.c                         |  4 ++--
> > > >  drivers/spi/Makefile                        |  2 +-
> > > >  drivers/spi/atmel_spi.c                     |  4 ++--
> > > >  drivers/spi/davinci_spi.c                   |  6 +++---
> > > >  drivers/spi/fsl_dspi.c                      |  5 +++--
> > > >  drivers/spi/kirkwood_spi.c                  |  2 +-
> > > >  drivers/spi/mxc_spi.c                       |  6 +++---
> > > >  drivers/spi/omap3_spi.c                     |  4 ++--
> > >
> > > nondm code on most of the driver will remove in the next version, So I
> > > didn't see any usecase of this conversion here.
> >
> > I think this is still the right direction to go in.  non-DM for SPL is
> > allowed and this is part of the logical steps needed for moving forward
> > with "now pull non-DM driver into own file for SPL" until the efforts to
> > make DM smaller still are ready.  So this series is on my list to test
> > and confirm doesn't change binary size on.
> 
> Sorry, I can't do a similar task over the years, I'm saying about
> nondm part of drivers which doesn't have any footprint issues? You may
> be true for nondm part which has SPL size issues like mxc_spi,
> sh_qspi, rest are fine to move. I'd remove those that part at max for
> next MW.

It comes down to where are we at with everything again?  I'm not saying
you have to be the one to split the code out.  But from what I recall of
the thread last week, for mxc_spi we get back to "i.MX6 is having
problems with size for DM+SPL".  So we can't just "OK, no more i.MX6
support".  Full U-Boot needs to be, and I believe is, converted.

So I guess the next question I have really is for Hou Zhiqiang and is,
do you need this series as part of fixing / converting the eSPI driver
and getting NXP platforms converted?  Thanks!
Jagan Teki June 2, 2020, 7:11 p.m. UTC | #5
On Wed, Jun 3, 2020 at 12:31 AM Tom Rini <trini at konsulko.com> wrote:
>
> On Wed, Jun 03, 2020 at 12:10:30AM +0530, Jagan Teki wrote:
> > On Tue, Jun 2, 2020 at 11:57 PM Tom Rini <trini at konsulko.com> wrote:
> > >
> > > On Tue, Jun 02, 2020 at 06:59:21PM +0530, Jagan Teki wrote:
> > > > On Tue, Jun 2, 2020 at 6:47 PM Zhiqiang Hou <Zhiqiang.Hou at nxp.com> wrote:
> > > > >
> > > > > From: Lukasz Majewski <lukma at denx.de>
> > > > >
> > > > > This change allows more fine tuning of driver model based SPI support in
> > > > > SPL and TPL. It is now possible to explicitly enable/disable the DM_SPI
> > > > > support in SPL and TPL via Kconfig option.
> > > > >
> > > > > Before this change it was necessary to use:
> > > > >     /* SPI Flash Configs */
> > > > >     #if defined(CONFIG_SPL_BUILD)
> > > > >     #undef CONFIG_DM_SPI
> > > > >     #undef CONFIG_DM_SPI_FLASH
> > > > >     #undef CONFIG_SPI_FLASH_MTD
> > > > >     #endif
> > > > >
> > > > > in the ./include/configs/<board>.h, which is error prone and shall be
> > > > > avoided when we strive to switch to Kconfig.
> > > > >
> > > > > The goal of this patch:
> > > > >
> > > > > Provide distinction for DM_SPI support in both U-Boot proper and SPL (TPL).
> > > > > Valid use case is when U-Boot proper wants to use DM_SPI, but SPL must
> > > > > still support non DM driver.
> > > > >
> > > > > Another use case is the conversion of non DM/DTS SPI driver to support
> > > > > DM/DTS. When such driver needs to work in both SPL and U-Boot proper, the
> > > > > distinction is needed in Kconfig (also if SPL version of the driver
> > > > > supports OF_PLATDATA).
> > > > >
> > > > > In the end of the day one would have to support following use cases (in
> > > > > single driver file - e.g. mxs_spi.c):
> > > > >
> > > > > - U-Boot proper driver supporting DT/DTS
> > > > > - U-Boot proper driver without DT/DTS support (deprecated)
> > > > > - SPL driver without DT/DTS support
> > > > > - SPL (and TPL) driver with DT/DTS (when the SoC has enough resources to
> > > > >   run full blown DT/DTS)
> > > > > - SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have constrained
> > > > >   environment with no fitImage and OF_LIBFDT support).
> > > > >
> > > > > Some boards do require SPI support (with DM) in SPL (TPL) and some only
> > > > > have DM_SPI{_FLASH} defined to allow compiling SPL.
> > > > >
> > > > > This patch converts #ifdef CONFIG_DM_SPI* to #if CONFIG_IS_ENABLED(DM_SPI)
> > > > > and provides corresponding defines in Kconfig.
> > > > >
> > > > > Signed-off-by: Lukasz Majewski <lukma at denx.de>
> > > > > Tested-by: Adam Ford <aford173 at gmail.com> #da850-evm
> > > > > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> > > > > ---
> > > > > V4:
> > > > >  - Rebase the patch and remove SPL_DM_SPI from target ls1046 boards.
> > > > >
> > > > >  arch/arm/Kconfig                            | 11 +++++++++++
> > > > >  board/l+g/vinco/vinco.c                     |  4 ++--
> > > > >  cmd/sf.c                                    |  4 ++--
> > > > >  cmd/spi.c                                   |  6 +++---
> > > > >  common/spl/Kconfig                          | 20 ++++++++++++++++++++
> > > > >  configs/am57xx_evm_defconfig                |  2 ++
> > > > >  configs/am57xx_hs_evm_defconfig             |  2 ++
> > > > >  configs/am57xx_hs_evm_usb_defconfig         |  2 ++
> > > > >  configs/axm_defconfig                       |  2 ++
> > > > >  configs/chromebook_link64_defconfig         |  2 ++
> > > > >  configs/chromebook_samus_tpl_defconfig      |  4 ++++
> > > > >  configs/dra7xx_evm_defconfig                |  2 ++
> > > > >  configs/dra7xx_hs_evm_defconfig             |  2 ++
> > > > >  configs/dra7xx_hs_evm_usb_defconfig         |  2 ++
> > > > >  configs/j721e_evm_a72_defconfig             |  2 ++
> > > > >  configs/j721e_evm_r5_defconfig              |  2 ++
> > > > >  configs/ls1021aiot_qspi_defconfig           |  2 ++
> > > > >  configs/ls1021aiot_sdcard_defconfig         |  2 ++
> > > > >  configs/ls1021aqds_qspi_defconfig           |  1 +
> > > > >  configs/ls1021aqds_sdcard_qspi_defconfig    |  1 +
> > > > >  configs/ls1021atwr_qspi_defconfig           |  1 +
> > > > >  configs/sama5d2_xplained_spiflash_defconfig |  2 ++
> > > > >  configs/sama5d3xek_spiflash_defconfig       |  7 ++++---
> > > > >  configs/sama5d4_xplained_spiflash_defconfig |  2 ++
> > > > >  configs/sama5d4ek_spiflash_defconfig        |  2 ++
> > > > >  configs/stm32mp15_basic_defconfig           |  2 ++
> > > > >  configs/taurus_defconfig                    |  2 ++
> > > > >  drivers/mtd/spi/Makefile                    |  4 ++--
> > > > >  drivers/mtd/spi/sf_probe.c                  |  2 +-
> > > > >  drivers/net/fm/fm.c                         |  4 ++--
> > > > >  drivers/spi/Makefile                        |  2 +-
> > > > >  drivers/spi/atmel_spi.c                     |  4 ++--
> > > > >  drivers/spi/davinci_spi.c                   |  6 +++---
> > > > >  drivers/spi/fsl_dspi.c                      |  5 +++--
> > > > >  drivers/spi/kirkwood_spi.c                  |  2 +-
> > > > >  drivers/spi/mxc_spi.c                       |  6 +++---
> > > > >  drivers/spi/omap3_spi.c                     |  4 ++--
> > > >
> > > > nondm code on most of the driver will remove in the next version, So I
> > > > didn't see any usecase of this conversion here.
> > >
> > > I think this is still the right direction to go in.  non-DM for SPL is
> > > allowed and this is part of the logical steps needed for moving forward
> > > with "now pull non-DM driver into own file for SPL" until the efforts to
> > > make DM smaller still are ready.  So this series is on my list to test
> > > and confirm doesn't change binary size on.
> >
> > Sorry, I can't do a similar task over the years, I'm saying about
> > nondm part of drivers which doesn't have any footprint issues? You may
> > be true for nondm part which has SPL size issues like mxc_spi,
> > sh_qspi, rest are fine to move. I'd remove those that part at max for
> > next MW.
>
> It comes down to where are we at with everything again?  I'm not saying
> you have to be the one to split the code out.  But from what I recall of
> the thread last week, for mxc_spi we get back to "i.MX6 is having
> problems with size for DM+SPL".  So we can't just "OK, no more i.MX6
> support".  Full U-Boot needs to be, and I believe is, converted.

As I said No to mxc_spi, sh_qspi at this point, but rest are fine
based on my series and some of the below drivers have nondm code which
no board using in the tree.

drivers/spi/atmel_spi.c
drivers/spi/davinci_spi.c
drivers/spi/fsl_dspi.c
drivers/spi/kirkwood_spi.c
drivers/spi/mxc_spi.c
drivers/spi/omap3_spi.c

>
> So I guess the next question I have really is for Hou Zhiqiang and is,
> do you need this series as part of fixing / converting the eSPI driver
> and getting NXP platforms converted?  Thanks!

Yes fsl_espi, I would wait till MW as I mentioned before and will work
to get these patches to be in proper shape before MW.

Overall, changes expect fsl_espi, mxc_spi, and sh_qspi can be fine for me.

Jagan.
Zhiqiang Hou June 3, 2020, 1:46 a.m. UTC | #6
Hi Tom and Jagan,

Thanks a lot for your comments!

> -----Original Message-----
> From: Tom Rini <trini at konsulko.com>
> Sent: 2020?6?3? 3:02
> To: Jagan Teki <jagan at amarulasolutions.com>; Z.q. Hou
> <zhiqiang.hou at nxp.com>
> Cc: U-Boot-Denx <u-boot at lists.denx.de>; Lokesh Vutla
> <lokeshvutla at ti.com>; Andrew F Davis <afd at ti.com>; Heiko Schocher
> <hs at denx.de>; Simon Glass <sjg at chromium.org>; Feng Li
> <feng.li_2 at nxp.com>; Alison Wang <alison.wang at nxp.com>; Sumit Garg
> <sumit.garg at nxp.com>; Eugen Hristev <eugen.hristev at microchip.com>;
> Patrick Delaunay <patrick.delaunay at st.com>; Vignesh R <vigneshr at ti.com>;
> Joe Hershberger <joe.hershberger at ni.com>; Stefan Roese <sr at denx.de>;
> Wolfgang Denk <wd at denx.de>; Lukasz Majewski <lukma at denx.de>; Miquel
> Raynal <miquel.raynal at bootlin.com>; Marek Vasut <marex at denx.de>; Bin
> Meng <bmeng.cn at gmail.com>; Simon Goldschmidt
> <simon.k.r.goldschmidt at gmail.com>; Markus Klotzbuecher
> <markus.klotzbuecher at kistler.com>; Baruch Siach <baruch at tkos.co.il>;
> Harald Seiler <hws at denx.de>; Joel Johnson <mrjoel at lixil.net>; Anatolij
> Gustschin <agust at denx.de>; Priyanka Jain <priyanka.jain at nxp.com>;
> Madalin Bucur (OSS) <madalin.bucur at oss.nxp.com>; Gervais, Francois
> <FGervais at distech-controls.com>; Udit Agarwal <udit.agarwal at nxp.com>
> Subject: Re: [PATCHv4 3/3] spi: Convert CONFIG_DM_SPI* to
> CONFIG_$(SPL_TPL_)DM_SPI*
> 
> On Wed, Jun 03, 2020 at 12:10:30AM +0530, Jagan Teki wrote:
> > On Tue, Jun 2, 2020 at 11:57 PM Tom Rini <trini at konsulko.com> wrote:
> > >
> > > On Tue, Jun 02, 2020 at 06:59:21PM +0530, Jagan Teki wrote:
> > > > On Tue, Jun 2, 2020 at 6:47 PM Zhiqiang Hou <Zhiqiang.Hou at nxp.com>
> wrote:
> > > > >
> > > > > From: Lukasz Majewski <lukma at denx.de>
> > > > >
> > > > > This change allows more fine tuning of driver model based SPI
> > > > > support in SPL and TPL. It is now possible to explicitly
> > > > > enable/disable the DM_SPI support in SPL and TPL via Kconfig option.
> > > > >
> > > > > Before this change it was necessary to use:
> > > > >     /* SPI Flash Configs */
> > > > >     #if defined(CONFIG_SPL_BUILD)
> > > > >     #undef CONFIG_DM_SPI
> > > > >     #undef CONFIG_DM_SPI_FLASH
> > > > >     #undef CONFIG_SPI_FLASH_MTD
> > > > >     #endif
> > > > >
> > > > > in the ./include/configs/<board>.h, which is error prone and
> > > > > shall be avoided when we strive to switch to Kconfig.
> > > > >
> > > > > The goal of this patch:
> > > > >
> > > > > Provide distinction for DM_SPI support in both U-Boot proper and SPL
> (TPL).
> > > > > Valid use case is when U-Boot proper wants to use DM_SPI, but
> > > > > SPL must still support non DM driver.
> > > > >
> > > > > Another use case is the conversion of non DM/DTS SPI driver to
> > > > > support DM/DTS. When such driver needs to work in both SPL and
> > > > > U-Boot proper, the distinction is needed in Kconfig (also if SPL
> > > > > version of the driver supports OF_PLATDATA).
> > > > >
> > > > > In the end of the day one would have to support following use
> > > > > cases (in single driver file - e.g. mxs_spi.c):
> > > > >
> > > > > - U-Boot proper driver supporting DT/DTS
> > > > > - U-Boot proper driver without DT/DTS support (deprecated)
> > > > > - SPL driver without DT/DTS support
> > > > > - SPL (and TPL) driver with DT/DTS (when the SoC has enough
> resources to
> > > > >   run full blown DT/DTS)
> > > > > - SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have
> constrained
> > > > >   environment with no fitImage and OF_LIBFDT support).
> > > > >
> > > > > Some boards do require SPI support (with DM) in SPL (TPL) and
> > > > > some only have DM_SPI{_FLASH} defined to allow compiling SPL.
> > > > >
> > > > > This patch converts #ifdef CONFIG_DM_SPI* to #if
> > > > > CONFIG_IS_ENABLED(DM_SPI) and provides corresponding defines in
> Kconfig.
> > > > >
> > > > > Signed-off-by: Lukasz Majewski <lukma at denx.de>
> > > > > Tested-by: Adam Ford <aford173 at gmail.com> #da850-evm
> > > > > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> > > > > ---
> > > > > V4:
> > > > >  - Rebase the patch and remove SPL_DM_SPI from target ls1046
> boards.
> > > > >
> > > > >  arch/arm/Kconfig                            | 11
> +++++++++++
> > > > >  board/l+g/vinco/vinco.c                     |  4 ++--
> > > > >  cmd/sf.c                                    |  4 ++--
> > > > >  cmd/spi.c                                   |  6 +++---
> > > > >  common/spl/Kconfig                          | 20
> ++++++++++++++++++++
> > > > >  configs/am57xx_evm_defconfig                |  2 ++
> > > > >  configs/am57xx_hs_evm_defconfig             |  2 ++
> > > > >  configs/am57xx_hs_evm_usb_defconfig         |  2 ++
> > > > >  configs/axm_defconfig                       |  2 ++
> > > > >  configs/chromebook_link64_defconfig         |  2 ++
> > > > >  configs/chromebook_samus_tpl_defconfig      |  4 ++++
> > > > >  configs/dra7xx_evm_defconfig                |  2 ++
> > > > >  configs/dra7xx_hs_evm_defconfig             |  2 ++
> > > > >  configs/dra7xx_hs_evm_usb_defconfig         |  2 ++
> > > > >  configs/j721e_evm_a72_defconfig             |  2 ++
> > > > >  configs/j721e_evm_r5_defconfig              |  2 ++
> > > > >  configs/ls1021aiot_qspi_defconfig           |  2 ++
> > > > >  configs/ls1021aiot_sdcard_defconfig         |  2 ++
> > > > >  configs/ls1021aqds_qspi_defconfig           |  1 +
> > > > >  configs/ls1021aqds_sdcard_qspi_defconfig    |  1 +
> > > > >  configs/ls1021atwr_qspi_defconfig           |  1 +
> > > > >  configs/sama5d2_xplained_spiflash_defconfig |  2 ++
> > > > >  configs/sama5d3xek_spiflash_defconfig       |  7 ++++---
> > > > >  configs/sama5d4_xplained_spiflash_defconfig |  2 ++
> > > > >  configs/sama5d4ek_spiflash_defconfig        |  2 ++
> > > > >  configs/stm32mp15_basic_defconfig           |  2 ++
> > > > >  configs/taurus_defconfig                    |  2 ++
> > > > >  drivers/mtd/spi/Makefile                    |  4 ++--
> > > > >  drivers/mtd/spi/sf_probe.c                  |  2 +-
> > > > >  drivers/net/fm/fm.c                         |  4 ++--
> > > > >  drivers/spi/Makefile                        |  2 +-
> > > > >  drivers/spi/atmel_spi.c                     |  4 ++--
> > > > >  drivers/spi/davinci_spi.c                   |  6 +++---
> > > > >  drivers/spi/fsl_dspi.c                      |  5 +++--
> > > > >  drivers/spi/kirkwood_spi.c                  |  2 +-
> > > > >  drivers/spi/mxc_spi.c                       |  6 +++---
> > > > >  drivers/spi/omap3_spi.c                     |  4 ++--
> > > >
> > > > nondm code on most of the driver will remove in the next version,
> > > > So I didn't see any usecase of this conversion here.
> > >
> > > I think this is still the right direction to go in.  non-DM for SPL
> > > is allowed and this is part of the logical steps needed for moving
> > > forward with "now pull non-DM driver into own file for SPL" until
> > > the efforts to make DM smaller still are ready.  So this series is
> > > on my list to test and confirm doesn't change binary size on.
> >
> > Sorry, I can't do a similar task over the years, I'm saying about
> > nondm part of drivers which doesn't have any footprint issues? You may
> > be true for nondm part which has SPL size issues like mxc_spi,
> > sh_qspi, rest are fine to move. I'd remove those that part at max for
> > next MW.
> 
> It comes down to where are we at with everything again?  I'm not saying
> you have to be the one to split the code out.  But from what I recall of the
> thread last week, for mxc_spi we get back to "i.MX6 is having problems with
> size for DM+SPL".  So we can't just "OK, no more i.MX6 support".  Full
> U-Boot needs to be, and I believe is, converted.
> 
> So I guess the next question I have really is for Hou Zhiqiang and is, do you
> need this series as part of fixing / converting the eSPI driver and getting NXP
> platforms converted?  Thanks!

Yes, the eSPI DM converting depends on this series, since the SPL now is non-DM.

Thanks,
Zhiqiang

> 
> --
> Tom
Jagan Teki June 3, 2020, 7:39 a.m. UTC | #7
On Wed, Jun 3, 2020 at 7:16 AM Z.q. Hou <zhiqiang.hou at nxp.com> wrote:
>
> Hi Tom and Jagan,
>
> Thanks a lot for your comments!
>
> > -----Original Message-----
> > From: Tom Rini <trini at konsulko.com>
> > Sent: 2020?6?3? 3:02
> > To: Jagan Teki <jagan at amarulasolutions.com>; Z.q. Hou
> > <zhiqiang.hou at nxp.com>
> > Cc: U-Boot-Denx <u-boot at lists.denx.de>; Lokesh Vutla
> > <lokeshvutla at ti.com>; Andrew F Davis <afd at ti.com>; Heiko Schocher
> > <hs at denx.de>; Simon Glass <sjg at chromium.org>; Feng Li
> > <feng.li_2 at nxp.com>; Alison Wang <alison.wang at nxp.com>; Sumit Garg
> > <sumit.garg at nxp.com>; Eugen Hristev <eugen.hristev at microchip.com>;
> > Patrick Delaunay <patrick.delaunay at st.com>; Vignesh R <vigneshr at ti.com>;
> > Joe Hershberger <joe.hershberger at ni.com>; Stefan Roese <sr at denx.de>;
> > Wolfgang Denk <wd at denx.de>; Lukasz Majewski <lukma at denx.de>; Miquel
> > Raynal <miquel.raynal at bootlin.com>; Marek Vasut <marex at denx.de>; Bin
> > Meng <bmeng.cn at gmail.com>; Simon Goldschmidt
> > <simon.k.r.goldschmidt at gmail.com>; Markus Klotzbuecher
> > <markus.klotzbuecher at kistler.com>; Baruch Siach <baruch at tkos.co.il>;
> > Harald Seiler <hws at denx.de>; Joel Johnson <mrjoel at lixil.net>; Anatolij
> > Gustschin <agust at denx.de>; Priyanka Jain <priyanka.jain at nxp.com>;
> > Madalin Bucur (OSS) <madalin.bucur at oss.nxp.com>; Gervais, Francois
> > <FGervais at distech-controls.com>; Udit Agarwal <udit.agarwal at nxp.com>
> > Subject: Re: [PATCHv4 3/3] spi: Convert CONFIG_DM_SPI* to
> > CONFIG_$(SPL_TPL_)DM_SPI*
> >
> > On Wed, Jun 03, 2020 at 12:10:30AM +0530, Jagan Teki wrote:
> > > On Tue, Jun 2, 2020 at 11:57 PM Tom Rini <trini at konsulko.com> wrote:
> > > >
> > > > On Tue, Jun 02, 2020 at 06:59:21PM +0530, Jagan Teki wrote:
> > > > > On Tue, Jun 2, 2020 at 6:47 PM Zhiqiang Hou <Zhiqiang.Hou at nxp.com>
> > wrote:
> > > > > >
> > > > > > From: Lukasz Majewski <lukma at denx.de>
> > > > > >
> > > > > > This change allows more fine tuning of driver model based SPI
> > > > > > support in SPL and TPL. It is now possible to explicitly
> > > > > > enable/disable the DM_SPI support in SPL and TPL via Kconfig option.
> > > > > >
> > > > > > Before this change it was necessary to use:
> > > > > >     /* SPI Flash Configs */
> > > > > >     #if defined(CONFIG_SPL_BUILD)
> > > > > >     #undef CONFIG_DM_SPI
> > > > > >     #undef CONFIG_DM_SPI_FLASH
> > > > > >     #undef CONFIG_SPI_FLASH_MTD
> > > > > >     #endif
> > > > > >
> > > > > > in the ./include/configs/<board>.h, which is error prone and
> > > > > > shall be avoided when we strive to switch to Kconfig.
> > > > > >
> > > > > > The goal of this patch:
> > > > > >
> > > > > > Provide distinction for DM_SPI support in both U-Boot proper and SPL
> > (TPL).
> > > > > > Valid use case is when U-Boot proper wants to use DM_SPI, but
> > > > > > SPL must still support non DM driver.
> > > > > >
> > > > > > Another use case is the conversion of non DM/DTS SPI driver to
> > > > > > support DM/DTS. When such driver needs to work in both SPL and
> > > > > > U-Boot proper, the distinction is needed in Kconfig (also if SPL
> > > > > > version of the driver supports OF_PLATDATA).
> > > > > >
> > > > > > In the end of the day one would have to support following use
> > > > > > cases (in single driver file - e.g. mxs_spi.c):
> > > > > >
> > > > > > - U-Boot proper driver supporting DT/DTS
> > > > > > - U-Boot proper driver without DT/DTS support (deprecated)
> > > > > > - SPL driver without DT/DTS support
> > > > > > - SPL (and TPL) driver with DT/DTS (when the SoC has enough
> > resources to
> > > > > >   run full blown DT/DTS)
> > > > > > - SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have
> > constrained
> > > > > >   environment with no fitImage and OF_LIBFDT support).
> > > > > >
> > > > > > Some boards do require SPI support (with DM) in SPL (TPL) and
> > > > > > some only have DM_SPI{_FLASH} defined to allow compiling SPL.
> > > > > >
> > > > > > This patch converts #ifdef CONFIG_DM_SPI* to #if
> > > > > > CONFIG_IS_ENABLED(DM_SPI) and provides corresponding defines in
> > Kconfig.
> > > > > >
> > > > > > Signed-off-by: Lukasz Majewski <lukma at denx.de>
> > > > > > Tested-by: Adam Ford <aford173 at gmail.com> #da850-evm
> > > > > > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> > > > > > ---
> > > > > > V4:
> > > > > >  - Rebase the patch and remove SPL_DM_SPI from target ls1046
> > boards.
> > > > > >
> > > > > >  arch/arm/Kconfig                            | 11
> > +++++++++++
> > > > > >  board/l+g/vinco/vinco.c                     |  4 ++--
> > > > > >  cmd/sf.c                                    |  4 ++--
> > > > > >  cmd/spi.c                                   |  6 +++---
> > > > > >  common/spl/Kconfig                          | 20
> > ++++++++++++++++++++
> > > > > >  configs/am57xx_evm_defconfig                |  2 ++
> > > > > >  configs/am57xx_hs_evm_defconfig             |  2 ++
> > > > > >  configs/am57xx_hs_evm_usb_defconfig         |  2 ++
> > > > > >  configs/axm_defconfig                       |  2 ++
> > > > > >  configs/chromebook_link64_defconfig         |  2 ++
> > > > > >  configs/chromebook_samus_tpl_defconfig      |  4 ++++
> > > > > >  configs/dra7xx_evm_defconfig                |  2 ++
> > > > > >  configs/dra7xx_hs_evm_defconfig             |  2 ++
> > > > > >  configs/dra7xx_hs_evm_usb_defconfig         |  2 ++
> > > > > >  configs/j721e_evm_a72_defconfig             |  2 ++
> > > > > >  configs/j721e_evm_r5_defconfig              |  2 ++
> > > > > >  configs/ls1021aiot_qspi_defconfig           |  2 ++
> > > > > >  configs/ls1021aiot_sdcard_defconfig         |  2 ++
> > > > > >  configs/ls1021aqds_qspi_defconfig           |  1 +
> > > > > >  configs/ls1021aqds_sdcard_qspi_defconfig    |  1 +
> > > > > >  configs/ls1021atwr_qspi_defconfig           |  1 +
> > > > > >  configs/sama5d2_xplained_spiflash_defconfig |  2 ++
> > > > > >  configs/sama5d3xek_spiflash_defconfig       |  7 ++++---
> > > > > >  configs/sama5d4_xplained_spiflash_defconfig |  2 ++
> > > > > >  configs/sama5d4ek_spiflash_defconfig        |  2 ++
> > > > > >  configs/stm32mp15_basic_defconfig           |  2 ++
> > > > > >  configs/taurus_defconfig                    |  2 ++
> > > > > >  drivers/mtd/spi/Makefile                    |  4 ++--
> > > > > >  drivers/mtd/spi/sf_probe.c                  |  2 +-
> > > > > >  drivers/net/fm/fm.c                         |  4 ++--
> > > > > >  drivers/spi/Makefile                        |  2 +-
> > > > > >  drivers/spi/atmel_spi.c                     |  4 ++--
> > > > > >  drivers/spi/davinci_spi.c                   |  6 +++---
> > > > > >  drivers/spi/fsl_dspi.c                      |  5 +++--
> > > > > >  drivers/spi/kirkwood_spi.c                  |  2 +-
> > > > > >  drivers/spi/mxc_spi.c                       |  6 +++---
> > > > > >  drivers/spi/omap3_spi.c                     |  4 ++--
> > > > >
> > > > > nondm code on most of the driver will remove in the next version,
> > > > > So I didn't see any usecase of this conversion here.
> > > >
> > > > I think this is still the right direction to go in.  non-DM for SPL
> > > > is allowed and this is part of the logical steps needed for moving
> > > > forward with "now pull non-DM driver into own file for SPL" until
> > > > the efforts to make DM smaller still are ready.  So this series is
> > > > on my list to test and confirm doesn't change binary size on.
> > >
> > > Sorry, I can't do a similar task over the years, I'm saying about
> > > nondm part of drivers which doesn't have any footprint issues? You may
> > > be true for nondm part which has SPL size issues like mxc_spi,
> > > sh_qspi, rest are fine to move. I'd remove those that part at max for
> > > next MW.
> >
> > It comes down to where are we at with everything again?  I'm not saying
> > you have to be the one to split the code out.  But from what I recall of the
> > thread last week, for mxc_spi we get back to "i.MX6 is having problems with
> > size for DM+SPL".  So we can't just "OK, no more i.MX6 support".  Full
> > U-Boot needs to be, and I believe is, converted.
> >
> > So I guess the next question I have really is for Hou Zhiqiang and is, do you
> > need this series as part of fixing / converting the eSPI driver and getting NXP
> > platforms converted?  Thanks!
>
> Yes, the eSPI DM converting depends on this series, since the SPL now is non-DM.

But, I was wonder why it would touch other drivers, other than fsl_espi.c ?

Jagan.
Zhiqiang Hou June 3, 2020, 9:09 a.m. UTC | #8
Hi Jagan,

Thanks a lot for your comments!

> -----Original Message-----
> From: Jagan Teki [mailto:jagan at amarulasolutions.com]
> Sent: 2020?6?3? 15:39
> To: Z.q. Hou <zhiqiang.hou at nxp.com>
> Cc: Tom Rini <trini at konsulko.com>; U-Boot-Denx <u-boot at lists.denx.de>;
> Lokesh Vutla <lokeshvutla at ti.com>; Andrew F Davis <afd at ti.com>; Heiko
> Schocher <hs at denx.de>; Simon Glass <sjg at chromium.org>; Feng Li
> <feng.li_2 at nxp.com>; Alison Wang <alison.wang at nxp.com>; Sumit Garg
> <sumit.garg at nxp.com>; Eugen Hristev <eugen.hristev at microchip.com>;
> Patrick Delaunay <patrick.delaunay at st.com>; Vignesh R <vigneshr at ti.com>;
> Joe Hershberger <joe.hershberger at ni.com>; Stefan Roese <sr at denx.de>;
> Wolfgang Denk <wd at denx.de>; Lukasz Majewski <lukma at denx.de>; Miquel
> Raynal <miquel.raynal at bootlin.com>; Marek Vasut <marex at denx.de>; Bin
> Meng <bmeng.cn at gmail.com>; Simon Goldschmidt
> <simon.k.r.goldschmidt at gmail.com>; Markus Klotzbuecher
> <markus.klotzbuecher at kistler.com>; Baruch Siach <baruch at tkos.co.il>;
> Harald Seiler <hws at denx.de>; Joel Johnson <mrjoel at lixil.net>; Anatolij
> Gustschin <agust at denx.de>; Priyanka Jain <priyanka.jain at nxp.com>;
> Madalin Bucur (OSS) <madalin.bucur at oss.nxp.com>; Gervais, Francois
> <FGervais at distech-controls.com>; Udit Agarwal <udit.agarwal at nxp.com>
> Subject: Re: [PATCHv4 3/3] spi: Convert CONFIG_DM_SPI* to
> CONFIG_$(SPL_TPL_)DM_SPI*
> 
> On Wed, Jun 3, 2020 at 7:16 AM Z.q. Hou <zhiqiang.hou at nxp.com> wrote:
> >
> > Hi Tom and Jagan,
> >
> > Thanks a lot for your comments!
> >
> > > -----Original Message-----
> > > From: Tom Rini <trini at konsulko.com>
> > > Sent: 2020?6?3? 3:02
> > > To: Jagan Teki <jagan at amarulasolutions.com>; Z.q. Hou
> > > <zhiqiang.hou at nxp.com>
> > > Cc: U-Boot-Denx <u-boot at lists.denx.de>; Lokesh Vutla
> > > <lokeshvutla at ti.com>; Andrew F Davis <afd at ti.com>; Heiko Schocher
> > > <hs at denx.de>; Simon Glass <sjg at chromium.org>; Feng Li
> > > <feng.li_2 at nxp.com>; Alison Wang <alison.wang at nxp.com>; Sumit Garg
> > > <sumit.garg at nxp.com>; Eugen Hristev <eugen.hristev at microchip.com>;
> > > Patrick Delaunay <patrick.delaunay at st.com>; Vignesh R
> > > <vigneshr at ti.com>; Joe Hershberger <joe.hershberger at ni.com>; Stefan
> > > Roese <sr at denx.de>; Wolfgang Denk <wd at denx.de>; Lukasz Majewski
> > > <lukma at denx.de>; Miquel Raynal <miquel.raynal at bootlin.com>; Marek
> > > Vasut <marex at denx.de>; Bin Meng <bmeng.cn at gmail.com>; Simon
> > > Goldschmidt <simon.k.r.goldschmidt at gmail.com>; Markus Klotzbuecher
> > > <markus.klotzbuecher at kistler.com>; Baruch Siach <baruch at tkos.co.il>;
> > > Harald Seiler <hws at denx.de>; Joel Johnson <mrjoel at lixil.net>;
> > > Anatolij Gustschin <agust at denx.de>; Priyanka Jain
> > > <priyanka.jain at nxp.com>; Madalin Bucur (OSS)
> > > <madalin.bucur at oss.nxp.com>; Gervais, Francois
> > > <FGervais at distech-controls.com>; Udit Agarwal
> <udit.agarwal at nxp.com>
> > > Subject: Re: [PATCHv4 3/3] spi: Convert CONFIG_DM_SPI* to
> > > CONFIG_$(SPL_TPL_)DM_SPI*
> > >
> > > On Wed, Jun 03, 2020 at 12:10:30AM +0530, Jagan Teki wrote:
> > > > On Tue, Jun 2, 2020 at 11:57 PM Tom Rini <trini at konsulko.com> wrote:
> > > > >
> > > > > On Tue, Jun 02, 2020 at 06:59:21PM +0530, Jagan Teki wrote:
> > > > > > On Tue, Jun 2, 2020 at 6:47 PM Zhiqiang Hou
> > > > > > <Zhiqiang.Hou at nxp.com>
> > > wrote:
> > > > > > >
> > > > > > > From: Lukasz Majewski <lukma at denx.de>
> > > > > > >
> > > > > > > This change allows more fine tuning of driver model based
> > > > > > > SPI support in SPL and TPL. It is now possible to explicitly
> > > > > > > enable/disable the DM_SPI support in SPL and TPL via Kconfig
> option.
> > > > > > >
> > > > > > > Before this change it was necessary to use:
> > > > > > >     /* SPI Flash Configs */
> > > > > > >     #if defined(CONFIG_SPL_BUILD)
> > > > > > >     #undef CONFIG_DM_SPI
> > > > > > >     #undef CONFIG_DM_SPI_FLASH
> > > > > > >     #undef CONFIG_SPI_FLASH_MTD
> > > > > > >     #endif
> > > > > > >
> > > > > > > in the ./include/configs/<board>.h, which is error prone and
> > > > > > > shall be avoided when we strive to switch to Kconfig.
> > > > > > >
> > > > > > > The goal of this patch:
> > > > > > >
> > > > > > > Provide distinction for DM_SPI support in both U-Boot proper
> > > > > > > and SPL
> > > (TPL).
> > > > > > > Valid use case is when U-Boot proper wants to use DM_SPI,
> > > > > > > but SPL must still support non DM driver.
> > > > > > >
> > > > > > > Another use case is the conversion of non DM/DTS SPI driver
> > > > > > > to support DM/DTS. When such driver needs to work in both
> > > > > > > SPL and U-Boot proper, the distinction is needed in Kconfig
> > > > > > > (also if SPL version of the driver supports OF_PLATDATA).
> > > > > > >
> > > > > > > In the end of the day one would have to support following
> > > > > > > use cases (in single driver file - e.g. mxs_spi.c):
> > > > > > >
> > > > > > > - U-Boot proper driver supporting DT/DTS
> > > > > > > - U-Boot proper driver without DT/DTS support (deprecated)
> > > > > > > - SPL driver without DT/DTS support
> > > > > > > - SPL (and TPL) driver with DT/DTS (when the SoC has enough
> > > resources to
> > > > > > >   run full blown DT/DTS)
> > > > > > > - SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have
> > > constrained
> > > > > > >   environment with no fitImage and OF_LIBFDT support).
> > > > > > >
> > > > > > > Some boards do require SPI support (with DM) in SPL (TPL)
> > > > > > > and some only have DM_SPI{_FLASH} defined to allow compiling
> SPL.
> > > > > > >
> > > > > > > This patch converts #ifdef CONFIG_DM_SPI* to #if
> > > > > > > CONFIG_IS_ENABLED(DM_SPI) and provides corresponding defines
> > > > > > > in
> > > Kconfig.
> > > > > > >
> > > > > > > Signed-off-by: Lukasz Majewski <lukma at denx.de>
> > > > > > > Tested-by: Adam Ford <aford173 at gmail.com> #da850-evm
> > > > > > > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> > > > > > > ---
> > > > > > > V4:
> > > > > > >  - Rebase the patch and remove SPL_DM_SPI from target ls1046
> > > boards.
> > > > > > >
> > > > > > >  arch/arm/Kconfig                            | 11
> > > +++++++++++
> > > > > > >  board/l+g/vinco/vinco.c                     |  4 ++--
> > > > > > >  cmd/sf.c                                    |  4 ++--
> > > > > > >  cmd/spi.c                                   |  6
> +++---
> > > > > > >  common/spl/Kconfig                          | 20
> > > ++++++++++++++++++++
> > > > > > >  configs/am57xx_evm_defconfig                |  2 ++
> > > > > > >  configs/am57xx_hs_evm_defconfig             |  2 ++
> > > > > > >  configs/am57xx_hs_evm_usb_defconfig         |  2 ++
> > > > > > >  configs/axm_defconfig                       |  2 ++
> > > > > > >  configs/chromebook_link64_defconfig         |  2 ++
> > > > > > >  configs/chromebook_samus_tpl_defconfig      |  4 ++++
> > > > > > >  configs/dra7xx_evm_defconfig                |  2 ++
> > > > > > >  configs/dra7xx_hs_evm_defconfig             |  2 ++
> > > > > > >  configs/dra7xx_hs_evm_usb_defconfig         |  2 ++
> > > > > > >  configs/j721e_evm_a72_defconfig             |  2 ++
> > > > > > >  configs/j721e_evm_r5_defconfig              |  2 ++
> > > > > > >  configs/ls1021aiot_qspi_defconfig           |  2 ++
> > > > > > >  configs/ls1021aiot_sdcard_defconfig         |  2 ++
> > > > > > >  configs/ls1021aqds_qspi_defconfig           |  1 +
> > > > > > >  configs/ls1021aqds_sdcard_qspi_defconfig    |  1 +
> > > > > > >  configs/ls1021atwr_qspi_defconfig           |  1 +
> > > > > > >  configs/sama5d2_xplained_spiflash_defconfig |  2 ++
> > > > > > >  configs/sama5d3xek_spiflash_defconfig       |  7 ++++---
> > > > > > >  configs/sama5d4_xplained_spiflash_defconfig |  2 ++
> > > > > > >  configs/sama5d4ek_spiflash_defconfig        |  2 ++
> > > > > > >  configs/stm32mp15_basic_defconfig           |  2 ++
> > > > > > >  configs/taurus_defconfig                    |  2 ++
> > > > > > >  drivers/mtd/spi/Makefile                    |  4 ++--
> > > > > > >  drivers/mtd/spi/sf_probe.c                  |  2 +-
> > > > > > >  drivers/net/fm/fm.c                         |  4 ++--
> > > > > > >  drivers/spi/Makefile                        |  2 +-
> > > > > > >  drivers/spi/atmel_spi.c                     |  4 ++--
> > > > > > >  drivers/spi/davinci_spi.c                   |  6 +++---
> > > > > > >  drivers/spi/fsl_dspi.c                      |  5 +++--
> > > > > > >  drivers/spi/kirkwood_spi.c                  |  2 +-
> > > > > > >  drivers/spi/mxc_spi.c                       |  6 +++---
> > > > > > >  drivers/spi/omap3_spi.c                     |  4 ++--
> > > > > >
> > > > > > nondm code on most of the driver will remove in the next
> > > > > > version, So I didn't see any usecase of this conversion here.
> > > > >
> > > > > I think this is still the right direction to go in.  non-DM for
> > > > > SPL is allowed and this is part of the logical steps needed for
> > > > > moving forward with "now pull non-DM driver into own file for
> > > > > SPL" until the efforts to make DM smaller still are ready.  So
> > > > > this series is on my list to test and confirm doesn't change binary size
> on.
> > > >
> > > > Sorry, I can't do a similar task over the years, I'm saying about
> > > > nondm part of drivers which doesn't have any footprint issues? You
> > > > may be true for nondm part which has SPL size issues like mxc_spi,
> > > > sh_qspi, rest are fine to move. I'd remove those that part at max
> > > > for next MW.
> > >
> > > It comes down to where are we at with everything again?  I'm not
> > > saying you have to be the one to split the code out.  But from what
> > > I recall of the thread last week, for mxc_spi we get back to "i.MX6
> > > is having problems with size for DM+SPL".  So we can't just "OK, no
> > > more i.MX6 support".  Full U-Boot needs to be, and I believe is,
> converted.
> > >
> > > So I guess the next question I have really is for Hou Zhiqiang and
> > > is, do you need this series as part of fixing / converting the eSPI
> > > driver and getting NXP platforms converted?  Thanks!
> >
> > Yes, the eSPI DM converting depends on this series, since the SPL now is
> non-DM.
> 
> But, I was wonder why it would touch other drivers, other than fsl_espi.c ?

This series is not belong to eSPI converting patchset, the author of this series
is Lukasz, I help to rebase them to the latest code base, because the eSPI
converting patch depends on this series.

Thanks,
Zhiqiang

> 
> Jagan.
Lukasz Majewski June 3, 2020, 9:48 a.m. UTC | #9
Hi Jagan,

> On Wed, Jun 3, 2020 at 12:31 AM Tom Rini <trini at konsulko.com> wrote:
> >
> > On Wed, Jun 03, 2020 at 12:10:30AM +0530, Jagan Teki wrote:  
> > > On Tue, Jun 2, 2020 at 11:57 PM Tom Rini <trini at konsulko.com>
> > > wrote:  
> > > >
> > > > On Tue, Jun 02, 2020 at 06:59:21PM +0530, Jagan Teki wrote:  
> > > > > On Tue, Jun 2, 2020 at 6:47 PM Zhiqiang Hou
> > > > > <Zhiqiang.Hou at nxp.com> wrote:  
> > > > > >
> > > > > > From: Lukasz Majewski <lukma at denx.de>
> > > > > >
> > > > > > This change allows more fine tuning of driver model based
> > > > > > SPI support in SPL and TPL. It is now possible to
> > > > > > explicitly enable/disable the DM_SPI support in SPL and TPL
> > > > > > via Kconfig option.
> > > > > >
> > > > > > Before this change it was necessary to use:
> > > > > >     /* SPI Flash Configs */
> > > > > >     #if defined(CONFIG_SPL_BUILD)
> > > > > >     #undef CONFIG_DM_SPI
> > > > > >     #undef CONFIG_DM_SPI_FLASH
> > > > > >     #undef CONFIG_SPI_FLASH_MTD
> > > > > >     #endif
> > > > > >
> > > > > > in the ./include/configs/<board>.h, which is error prone
> > > > > > and shall be avoided when we strive to switch to Kconfig.
> > > > > >
> > > > > > The goal of this patch:
> > > > > >
> > > > > > Provide distinction for DM_SPI support in both U-Boot
> > > > > > proper and SPL (TPL). Valid use case is when U-Boot proper
> > > > > > wants to use DM_SPI, but SPL must still support non DM
> > > > > > driver.
> > > > > >
> > > > > > Another use case is the conversion of non DM/DTS SPI driver
> > > > > > to support DM/DTS. When such driver needs to work in both
> > > > > > SPL and U-Boot proper, the distinction is needed in Kconfig
> > > > > > (also if SPL version of the driver supports OF_PLATDATA).
> > > > > >
> > > > > > In the end of the day one would have to support following
> > > > > > use cases (in single driver file - e.g. mxs_spi.c):
> > > > > >
> > > > > > - U-Boot proper driver supporting DT/DTS
> > > > > > - U-Boot proper driver without DT/DTS support (deprecated)
> > > > > > - SPL driver without DT/DTS support
> > > > > > - SPL (and TPL) driver with DT/DTS (when the SoC has enough
> > > > > > resources to run full blown DT/DTS)
> > > > > > - SPL driver with DT/DTS and SPL_OF_PLATDATA (when one have
> > > > > > constrained environment with no fitImage and OF_LIBFDT
> > > > > > support).
> > > > > >
> > > > > > Some boards do require SPI support (with DM) in SPL (TPL)
> > > > > > and some only have DM_SPI{_FLASH} defined to allow
> > > > > > compiling SPL.
> > > > > >
> > > > > > This patch converts #ifdef CONFIG_DM_SPI* to #if
> > > > > > CONFIG_IS_ENABLED(DM_SPI) and provides corresponding
> > > > > > defines in Kconfig.
> > > > > >
> > > > > > Signed-off-by: Lukasz Majewski <lukma at denx.de>
> > > > > > Tested-by: Adam Ford <aford173 at gmail.com> #da850-evm
> > > > > > Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
> > > > > > ---
> > > > > > V4:
> > > > > >  - Rebase the patch and remove SPL_DM_SPI from target
> > > > > > ls1046 boards.
> > > > > >
> > > > > >  arch/arm/Kconfig                            | 11
> > > > > > +++++++++++ board/l+g/vinco/vinco.c                     |
> > > > > > 4 ++-- cmd/sf.c                                    |  4 ++--
> > > > > >  cmd/spi.c                                   |  6 +++---
> > > > > >  common/spl/Kconfig                          | 20
> > > > > > ++++++++++++++++++++ configs/am57xx_evm_defconfig
> > > > > >      |  2 ++ configs/am57xx_hs_evm_defconfig             |
> > > > > > 2 ++ configs/am57xx_hs_evm_usb_defconfig         |  2 ++
> > > > > >  configs/axm_defconfig                       |  2 ++
> > > > > >  configs/chromebook_link64_defconfig         |  2 ++
> > > > > >  configs/chromebook_samus_tpl_defconfig      |  4 ++++
> > > > > >  configs/dra7xx_evm_defconfig                |  2 ++
> > > > > >  configs/dra7xx_hs_evm_defconfig             |  2 ++
> > > > > >  configs/dra7xx_hs_evm_usb_defconfig         |  2 ++
> > > > > >  configs/j721e_evm_a72_defconfig             |  2 ++
> > > > > >  configs/j721e_evm_r5_defconfig              |  2 ++
> > > > > >  configs/ls1021aiot_qspi_defconfig           |  2 ++
> > > > > >  configs/ls1021aiot_sdcard_defconfig         |  2 ++
> > > > > >  configs/ls1021aqds_qspi_defconfig           |  1 +
> > > > > >  configs/ls1021aqds_sdcard_qspi_defconfig    |  1 +
> > > > > >  configs/ls1021atwr_qspi_defconfig           |  1 +
> > > > > >  configs/sama5d2_xplained_spiflash_defconfig |  2 ++
> > > > > >  configs/sama5d3xek_spiflash_defconfig       |  7 ++++---
> > > > > >  configs/sama5d4_xplained_spiflash_defconfig |  2 ++
> > > > > >  configs/sama5d4ek_spiflash_defconfig        |  2 ++
> > > > > >  configs/stm32mp15_basic_defconfig           |  2 ++
> > > > > >  configs/taurus_defconfig                    |  2 ++
> > > > > >  drivers/mtd/spi/Makefile                    |  4 ++--
> > > > > >  drivers/mtd/spi/sf_probe.c                  |  2 +-
> > > > > >  drivers/net/fm/fm.c                         |  4 ++--
> > > > > >  drivers/spi/Makefile                        |  2 +-
> > > > > >  drivers/spi/atmel_spi.c                     |  4 ++--
> > > > > >  drivers/spi/davinci_spi.c                   |  6 +++---
> > > > > >  drivers/spi/fsl_dspi.c                      |  5 +++--
> > > > > >  drivers/spi/kirkwood_spi.c                  |  2 +-
> > > > > >  drivers/spi/mxc_spi.c                       |  6 +++---
> > > > > >  drivers/spi/omap3_spi.c                     |  4 ++--  
> > > > >
> > > > > nondm code on most of the driver will remove in the next
> > > > > version, So I didn't see any usecase of this conversion here.
> > > > >  
> > > >
> > > > I think this is still the right direction to go in.  non-DM for
> > > > SPL is allowed and this is part of the logical steps needed for
> > > > moving forward with "now pull non-DM driver into own file for
> > > > SPL" until the efforts to make DM smaller still are ready.  So
> > > > this series is on my list to test and confirm doesn't change
> > > > binary size on.  
> > >
> > > Sorry, I can't do a similar task over the years, I'm saying about
> > > nondm part of drivers which doesn't have any footprint issues?
> > > You may be true for nondm part which has SPL size issues like
> > > mxc_spi, sh_qspi, rest are fine to move. I'd remove those that
> > > part at max for next MW.  
> >
> > It comes down to where are we at with everything again?  I'm not
> > saying you have to be the one to split the code out.  But from what
> > I recall of the thread last week, for mxc_spi we get back to "i.MX6
> > is having problems with size for DM+SPL".  So we can't just "OK, no
> > more i.MX6 support".  Full U-Boot needs to be, and I believe is,
> > converted.  
> 
> As I said No to mxc_spi, sh_qspi at this point, but rest are fine
> based on my series and some of the below drivers have nondm code which
> no board using in the tree.
> 
> drivers/spi/atmel_spi.c
> drivers/spi/davinci_spi.c
> drivers/spi/fsl_dspi.c
> drivers/spi/kirkwood_spi.c
> drivers/spi/mxc_spi.c

Sorry to jump in late - the mxc_spi.c's non-dm part may be needed as it
is used to have _really_ tiny SPL.

Please correct me if I misunderstood something - the non-dm part of
mxc_spi.c will NOT be removed?

> drivers/spi/omap3_spi.c
> 
> >
> > So I guess the next question I have really is for Hou Zhiqiang and
> > is, do you need this series as part of fixing / converting the eSPI
> > driver and getting NXP platforms converted?  Thanks!  
> 
> Yes fsl_espi, I would wait till MW as I mentioned before and will work
> to get these patches to be in proper shape before MW.
> 
> Overall, changes expect fsl_espi, mxc_spi, and sh_qspi can be fine
> for me.
> 
> Jagan.




Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200603/d7537693/attachment.sig>
diff mbox series

Patch

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 053e169e2c..eb4ee84601 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -549,6 +549,7 @@  config TARGET_GPLUGD
 config ARCH_DAVINCI
 	bool "TI DaVinci"
 	select CPU_ARM926EJS
+	select SPL_DM_SPI if SPL
 	imply CMD_SAVES
 	help
 	  Support for TI's DaVinci platform.
@@ -566,6 +567,8 @@  config ARCH_MVEBU
 	select DM_SERIAL
 	select DM_SPI
 	select DM_SPI_FLASH
+	select SPL_DM_SPI if SPL
+	select SPL_DM_SPI_FLASH if SPL
 	select OF_CONTROL
 	select OF_SEPARATE
 	select SPI
@@ -985,6 +988,8 @@  config ARCH_SOCFPGA
 	imply FAT_WRITE
 	imply SPL
 	imply SPL_DM
+	imply SPL_DM_SPI
+	imply SPL_DM_SPI_FLASH
 	imply SPL_LIBDISK_SUPPORT
 	imply SPL_MMC_SUPPORT
 	imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
@@ -1093,6 +1098,8 @@  config ARCH_ZYNQ
 	select SPL_BOARD_INIT if SPL
 	select SPL_CLK if SPL
 	select SPL_DM if SPL
+	select SPL_DM_SPI if SPL
+	select SPL_DM_SPI_FLASH if SPL
 	select SPL_OF_CONTROL if SPL
 	select SPL_SEPARATE_BSS if SPL
 	select SUPPORT_SPL
@@ -1131,6 +1138,8 @@  config ARCH_ZYNQMP
 	select OF_CONTROL
 	select SPL_BOARD_INIT if SPL
 	select SPL_CLK if SPL
+	select SPL_DM_SPI if SPI
+	select SPL_DM_SPI_FLASH if SPL_DM_SPI
 	select SPL_DM_MAILBOX if SPL
 	select SPL_FIRMWARE if SPL
 	select SPL_SEPARATE_BSS if SPL
@@ -1688,6 +1697,8 @@  config ARCH_ROCKCHIP
 	select OF_CONTROL
 	select SPI
 	select SPL_DM if SPL
+	select SPL_DM_SPI if SPL
+	select SPL_DM_SPI_FLASH if SPL
 	select SYS_MALLOC_F
 	select SYS_THUMB_BUILD if !ARM64
 	imply ADC
diff --git a/board/l+g/vinco/vinco.c b/board/l+g/vinco/vinco.c
index 5a998e37d8..440838c112 100644
--- a/board/l+g/vinco/vinco.c
+++ b/board/l+g/vinco/vinco.c
@@ -34,7 +34,7 @@ 
 DECLARE_GLOBAL_DATA_PTR;
 
 /* FIXME gpio code here need to handle through DM_GPIO */
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 int spi_cs_is_valid(unsigned int bus, unsigned int cs)
 {
 	return bus == 0 && cs == 0;
@@ -167,7 +167,7 @@  int board_init(void)
 	/* adress of boot parameters */
 	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 	vinco_spi0_hw_init();
 #endif
 
diff --git a/cmd/sf.c b/cmd/sf.c
index 727837d9cd..66ea43a44f 100644
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -91,7 +91,7 @@  static int do_spi_flash_probe(int argc, char *const argv[])
 	unsigned int speed = CONFIG_SF_DEFAULT_SPEED;
 	unsigned int mode = CONFIG_SF_DEFAULT_MODE;
 	char *endp;
-#ifdef CONFIG_DM_SPI_FLASH
+#if CONFIG_IS_ENABLED(DM_SPI_FLASH)
 	struct udevice *new, *bus_dev;
 	int ret;
 #else
@@ -124,7 +124,7 @@  static int do_spi_flash_probe(int argc, char *const argv[])
 			return -1;
 	}
 
-#ifdef CONFIG_DM_SPI_FLASH
+#if CONFIG_IS_ENABLED(DM_SPI_FLASH)
 	/* Remove the old device, otherwise probe will just be a nop */
 	ret = spi_find_bus_and_cs(bus, cs, &bus_dev, &new);
 	if (!ret) {
diff --git a/cmd/spi.c b/cmd/spi.c
index aec912167c..4aea191412 100644
--- a/cmd/spi.c
+++ b/cmd/spi.c
@@ -38,7 +38,7 @@  static int do_spi_xfer(int bus, int cs)
 	struct spi_slave *slave;
 	int ret = 0;
 
-#ifdef CONFIG_DM_SPI
+#if CONFIG_IS_ENABLED(DM_SPI)
 	char name[30], *str;
 	struct udevice *dev;
 
@@ -63,7 +63,7 @@  static int do_spi_xfer(int bus, int cs)
 		goto done;
 	ret = spi_xfer(slave, bitlen, dout, din,
 		       SPI_XFER_BEGIN | SPI_XFER_END);
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 	/* We don't get an error code in this case */
 	if (ret)
 		ret = -EIO;
@@ -79,7 +79,7 @@  static int do_spi_xfer(int bus, int cs)
 	}
 done:
 	spi_release_bus(slave);
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 	spi_free_slave(slave);
 #endif
 
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index 414b6f396d..58b74ab74e 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -739,6 +739,11 @@  config SPL_DM_SPI
 	help
 	  Enable support for SPI DM drivers in SPL.
 
+config SPL_DM_SPI_FLASH
+	bool "Support SPI DM FLASH drivers in SPL"
+	help
+	  Enable support for SPI DM flash drivers in SPL.
+
 endif
 if SPL_UBI
 config SPL_UBI_LOAD_BY_VOLNAME
@@ -1075,6 +1080,11 @@  config SPL_SPI_FLASH_SFDP_SUPPORT
 	 SPI NOR flashes using Serial Flash Discoverable Parameters (SFDP)
 	 tables as per JESD216 standard in SPL.
 
+config SPL_SPI_FLASH_MTD
+	bool "Support for SPI flash MTD drivers in SPL"
+	help
+	  Enable support for SPI flash MTD drivers in SPL.
+
 config SPL_SPI_LOAD
 	bool "Support loading from SPI flash"
 	help
@@ -1482,6 +1492,16 @@  config TPL_SPI_SUPPORT
 	  Enable support for using SPI in TPL. See SPL_SPI_SUPPORT for
 	  details.
 
+config TPL_DM_SPI
+	bool "Support SPI DM drivers in TPL"
+	help
+	  Enable support for SPI DM drivers in TPL.
+
+config TPL_DM_SPI_FLASH
+	bool "Support SPI DM FLASH drivers in TPL"
+	help
+	  Enable support for SPI DM flash drivers in TPL.
+
 config TPL_YMODEM_SUPPORT
 	bool "Support loading using Ymodem"
 	depends on TPL_SERIAL_SUPPORT
diff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
index 42942e9ed4..47c94ce73b 100644
--- a/configs/am57xx_evm_defconfig
+++ b/configs/am57xx_evm_defconfig
@@ -76,6 +76,7 @@  CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
 CONFIG_SF_DEFAULT_SPEED=76800000
 CONFIG_SPI_FLASH_SPANSION=y
@@ -94,6 +95,7 @@  CONFIG_DM_SCSI=y
 CONFIG_DM_SERIAL=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
diff --git a/configs/am57xx_hs_evm_defconfig b/configs/am57xx_hs_evm_defconfig
index f80ec38004..5c8c5d53cf 100644
--- a/configs/am57xx_hs_evm_defconfig
+++ b/configs/am57xx_hs_evm_defconfig
@@ -72,6 +72,7 @@  CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
 CONFIG_SF_DEFAULT_SPEED=76800000
 CONFIG_SPI_FLASH_SPANSION=y
@@ -90,6 +91,7 @@  CONFIG_DM_SCSI=y
 CONFIG_DM_SERIAL=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
diff --git a/configs/am57xx_hs_evm_usb_defconfig b/configs/am57xx_hs_evm_usb_defconfig
index 3b155cc202..0a1bcfd41f 100644
--- a/configs/am57xx_hs_evm_usb_defconfig
+++ b/configs/am57xx_hs_evm_usb_defconfig
@@ -78,6 +78,7 @@  CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
 CONFIG_SF_DEFAULT_SPEED=76800000
 CONFIG_SPI_FLASH_BAR=y
@@ -97,6 +98,7 @@  CONFIG_DM_REGULATOR_PALMAS=y
 CONFIG_DM_SERIAL=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
diff --git a/configs/axm_defconfig b/configs/axm_defconfig
index 1ae78463d4..bbf98b0b04 100644
--- a/configs/axm_defconfig
+++ b/configs/axm_defconfig
@@ -63,6 +63,8 @@  CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 # CONFIG_SYS_NAND_USE_FLASH_BBT is not set
 CONFIG_NAND_ATMEL=y
+CONFIG_SPL_DM_SPI=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PHYLIB=y
diff --git a/configs/chromebook_link64_defconfig b/configs/chromebook_link64_defconfig
index a13f6eac80..b3f7a215d9 100644
--- a/configs/chromebook_link64_defconfig
+++ b/configs/chromebook_link64_defconfig
@@ -30,6 +30,8 @@  CONFIG_SPL_SYS_MALLOC_SIMPLE=y
 CONFIG_SPL_CPU_SUPPORT=y
 CONFIG_SPL_ENV_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_DM_SPI=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SPL_NET_SUPPORT=y
 CONFIG_SPL_PCI=y
 CONFIG_SPL_PCH_SUPPORT=y
diff --git a/configs/chromebook_samus_tpl_defconfig b/configs/chromebook_samus_tpl_defconfig
index a12a04b0bf..0a514517ea 100644
--- a/configs/chromebook_samus_tpl_defconfig
+++ b/configs/chromebook_samus_tpl_defconfig
@@ -31,11 +31,15 @@  CONFIG_BLOBLIST_SIZE=0x1000
 CONFIG_BLOBLIST_ADDR=0xff7c0000
 CONFIG_HANDOFF=y
 CONFIG_SPL_SEPARATE_BSS=y
+CONFIG_SPL_DM_SPI=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SPL_NET_SUPPORT=y
 CONFIG_SPL_PCI=y
 CONFIG_SPL_PCH_SUPPORT=y
 CONFIG_TPL_PCI=y
 CONFIG_TPL_PCH_SUPPORT=y
+CONFIG_TPL_DM_SPI=y
+CONFIG_TPL_DM_SPI_FLASH=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_CPU=y
 CONFIG_CMD_GPIO=y
diff --git a/configs/dra7xx_evm_defconfig b/configs/dra7xx_evm_defconfig
index e4547d9dcc..019fe0d217 100644
--- a/configs/dra7xx_evm_defconfig
+++ b/configs/dra7xx_evm_defconfig
@@ -83,6 +83,7 @@  CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
 CONFIG_SF_DEFAULT_SPEED=76800000
 CONFIG_SPI_FLASH_SPANSION=y
@@ -105,6 +106,7 @@  CONFIG_DM_SCSI=y
 CONFIG_DM_SERIAL=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
diff --git a/configs/dra7xx_hs_evm_defconfig b/configs/dra7xx_hs_evm_defconfig
index c08bcce903..e14d4186ff 100644
--- a/configs/dra7xx_hs_evm_defconfig
+++ b/configs/dra7xx_hs_evm_defconfig
@@ -86,6 +86,7 @@  CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
 CONFIG_SF_DEFAULT_SPEED=76800000
 CONFIG_SPI_FLASH_SPANSION=y
@@ -108,6 +109,7 @@  CONFIG_DM_SCSI=y
 CONFIG_DM_SERIAL=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
diff --git a/configs/dra7xx_hs_evm_usb_defconfig b/configs/dra7xx_hs_evm_usb_defconfig
index 879c2b650b..7bb1cbb7af 100644
--- a/configs/dra7xx_hs_evm_usb_defconfig
+++ b/configs/dra7xx_hs_evm_usb_defconfig
@@ -83,6 +83,7 @@  CONFIG_SPL_MMC_HS200_SUPPORT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
 CONFIG_SF_DEFAULT_SPEED=76800000
 CONFIG_SPI_FLASH_BAR=y
@@ -105,6 +106,7 @@  CONFIG_DM_SCSI=y
 CONFIG_DM_SERIAL=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
diff --git a/configs/j721e_evm_a72_defconfig b/configs/j721e_evm_a72_defconfig
index 4deb4e219f..175fdbaeca 100644
--- a/configs/j721e_evm_a72_defconfig
+++ b/configs/j721e_evm_a72_defconfig
@@ -120,6 +120,7 @@  CONFIG_FLASH_CFI_MTD=y
 CONFIG_SYS_FLASH_CFI=y
 CONFIG_HBMC_AM654=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_SPI_FLASH_MTD=y
@@ -146,6 +147,7 @@  CONFIG_DM_SERIAL=y
 CONFIG_SOC_TI=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_CADENCE_QSPI=y
 CONFIG_SYSRESET=y
 CONFIG_SPL_SYSRESET=y
diff --git a/configs/j721e_evm_r5_defconfig b/configs/j721e_evm_r5_defconfig
index ee9217aee2..60ad84ae38 100644
--- a/configs/j721e_evm_r5_defconfig
+++ b/configs/j721e_evm_r5_defconfig
@@ -89,6 +89,7 @@  CONFIG_SPL_MMC_SDHCI_ADMA=y
 CONFIG_MMC_SDHCI_AM654=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH_SFDP_SUPPORT=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PINCTRL=y
@@ -112,6 +113,7 @@  CONFIG_DM_SERIAL=y
 CONFIG_SOC_TI=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_CADENCE_QSPI=y
 CONFIG_SYSRESET=y
 CONFIG_SPL_SYSRESET=y
diff --git a/configs/ls1021aiot_qspi_defconfig b/configs/ls1021aiot_qspi_defconfig
index cb73a04b35..5f576b4255 100644
--- a/configs/ls1021aiot_qspi_defconfig
+++ b/configs/ls1021aiot_qspi_defconfig
@@ -17,6 +17,7 @@  CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_SF=y
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="ls1021a-iot-duart"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
@@ -44,6 +45,7 @@  CONFIG_DM_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_FSL_DSPI=y
 CONFIG_FSL_QSPI=y
 CONFIG_USB=y
diff --git a/configs/ls1021aiot_sdcard_defconfig b/configs/ls1021aiot_sdcard_defconfig
index 10b6930914..c2c24c39a4 100644
--- a/configs/ls1021aiot_sdcard_defconfig
+++ b/configs/ls1021aiot_sdcard_defconfig
@@ -22,6 +22,7 @@  CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_SF=y
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="ls1021a-iot-duart"
@@ -50,6 +51,7 @@  CONFIG_DM_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_FSL_DSPI=y
 CONFIG_FSL_QSPI=y
 CONFIG_USB=y
diff --git a/configs/ls1021aqds_qspi_defconfig b/configs/ls1021aqds_qspi_defconfig
index f91534cfdd..0542c5c303 100644
--- a/configs/ls1021aqds_qspi_defconfig
+++ b/configs/ls1021aqds_qspi_defconfig
@@ -64,6 +64,7 @@  CONFIG_DM_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_FSL_DSPI=y
 CONFIG_FSL_QSPI=y
 CONFIG_USB=y
diff --git a/configs/ls1021aqds_sdcard_qspi_defconfig b/configs/ls1021aqds_sdcard_qspi_defconfig
index 9871c8edf4..fd49917505 100644
--- a/configs/ls1021aqds_sdcard_qspi_defconfig
+++ b/configs/ls1021aqds_sdcard_qspi_defconfig
@@ -76,6 +76,7 @@  CONFIG_DM_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPIy=y
 CONFIG_FSL_DSPI=y
 CONFIG_FSL_QSPI=y
 CONFIG_USB=y
diff --git a/configs/ls1021atwr_qspi_defconfig b/configs/ls1021atwr_qspi_defconfig
index 4c82d66899..8ef0589334 100644
--- a/configs/ls1021atwr_qspi_defconfig
+++ b/configs/ls1021atwr_qspi_defconfig
@@ -62,6 +62,7 @@  CONFIG_DM_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPI_DM_SPI=y
 CONFIG_FSL_DSPI=y
 CONFIG_FSL_QSPI=y
 CONFIG_USB=y
diff --git a/configs/sama5d2_xplained_spiflash_defconfig b/configs/sama5d2_xplained_spiflash_defconfig
index 43d493bf9c..377d6a32d0 100644
--- a/configs/sama5d2_xplained_spiflash_defconfig
+++ b/configs/sama5d2_xplained_spiflash_defconfig
@@ -66,6 +66,8 @@  CONFIG_DM_MMC=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_ATMEL=y
 CONFIG_MTD=y
+CONFIG_SPL_DM_SPI=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_SPEED=30000000
 CONFIG_SPI_FLASH_ATMEL=y
diff --git a/configs/sama5d3xek_spiflash_defconfig b/configs/sama5d3xek_spiflash_defconfig
index 6a76d7c9c0..47615464a5 100644
--- a/configs/sama5d3xek_spiflash_defconfig
+++ b/configs/sama5d3xek_spiflash_defconfig
@@ -8,12 +8,12 @@  CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_ENV_SIZE=0x2000
-CONFIG_ENV_OFFSET=0x6000
 CONFIG_ENV_SECT_SIZE=0x1000
-CONFIG_SYS_SPI_U_BOOT_OFFS=0x10000
-CONFIG_DM_GPIO=y
+CONFIG_ENV_OFFSET=0x6000
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
+CONFIG_SYS_SPI_U_BOOT_OFFS=0x10000
+CONFIG_DM_GPIO=y
 CONFIG_NR_DRAM_BANKS=1
 CONFIG_SPL=y
 CONFIG_DEBUG_UART_BOARD_INIT=y
@@ -22,6 +22,7 @@  CONFIG_DEBUG_UART_CLOCK=132000000
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_TEXT_BASE=0x300000
+CONFIG_SPL_DM_SPI=y
 CONFIG_DEBUG_UART=y
 CONFIG_ENV_VARS_UBOOT_CONFIG=y
 CONFIG_FIT=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
index 3be18e65a4..8c43fc785b 100644
--- a/configs/sama5d4_xplained_spiflash_defconfig
+++ b/configs/sama5d4_xplained_spiflash_defconfig
@@ -67,6 +67,7 @@  CONFIG_MTD_RAW_NAND=y
 # CONFIG_SYS_NAND_USE_FLASH_BBT is not set
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_SPEED=30000000
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_DM_ETH=y
@@ -80,6 +81,7 @@  CONFIG_DEBUG_UART_ANNOUNCE=y
 CONFIG_ATMEL_USART=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_TIMER=y
 CONFIG_SPL_TIMER=y
 CONFIG_ATMEL_PIT_TIMER=y
diff --git a/configs/sama5d4ek_spiflash_defconfig b/configs/sama5d4ek_spiflash_defconfig
index a7541a22d6..a4addddffb 100644
--- a/configs/sama5d4ek_spiflash_defconfig
+++ b/configs/sama5d4ek_spiflash_defconfig
@@ -64,6 +64,7 @@  CONFIG_MTD_RAW_NAND=y
 # CONFIG_SYS_NAND_USE_FLASH_BBT is not set
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_SPEED=30000000
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_DM_ETH=y
@@ -77,6 +78,7 @@  CONFIG_DEBUG_UART_ANNOUNCE=y
 CONFIG_ATMEL_USART=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_TIMER=y
 CONFIG_SPL_TIMER=y
 CONFIG_ATMEL_PIT_TIMER=y
diff --git a/configs/stm32mp15_basic_defconfig b/configs/stm32mp15_basic_defconfig
index c7dd2926c9..87f15bd3db 100644
--- a/configs/stm32mp15_basic_defconfig
+++ b/configs/stm32mp15_basic_defconfig
@@ -90,6 +90,7 @@  CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_STM32_FMC2=y
 CONFIG_MTD_SPI_NAND=y
 CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
@@ -120,6 +121,7 @@  CONFIG_RTC_STM32=y
 CONFIG_SERIAL_RX_BUFFER=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_SPL_DM_SPI=y
 CONFIG_STM32_QSPI=y
 CONFIG_STM32_SPI=y
 CONFIG_USB=y
diff --git a/configs/taurus_defconfig b/configs/taurus_defconfig
index 19d85f9b5a..5149365617 100644
--- a/configs/taurus_defconfig
+++ b/configs/taurus_defconfig
@@ -71,6 +71,8 @@  CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 # CONFIG_SYS_NAND_USE_FLASH_BBT is not set
 CONFIG_NAND_ATMEL=y
+CONFIG_SPL_DM_SPI=y
+CONFIG_SPL_DM_SPI_FLASH=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PHYLIB=y
diff --git a/drivers/mtd/spi/Makefile b/drivers/mtd/spi/Makefile
index b5dfa300de..952fd1e45a 100644
--- a/drivers/mtd/spi/Makefile
+++ b/drivers/mtd/spi/Makefile
@@ -3,7 +3,7 @@ 
 # (C) Copyright 2006
 # Wolfgang Denk, DENX Software Engineering, wd at denx.de.
 
-obj-$(CONFIG_DM_SPI_FLASH) += sf-uclass.o
+obj-$(CONFIG_$(SPL_TPL_)DM_SPI_FLASH) += sf-uclass.o
 spi-nor-y := sf_probe.o spi-nor-ids.o
 
 ifdef CONFIG_SPL_BUILD
@@ -19,5 +19,5 @@  endif
 
 obj-$(CONFIG_SPI_FLASH) += spi-nor.o
 obj-$(CONFIG_SPI_FLASH_DATAFLASH) += sf_dataflash.o
-obj-$(CONFIG_$(SPL_)SPI_FLASH_MTD) += sf_mtd.o
+obj-$(CONFIG_$(SPL_TPL_)SPI_FLASH_MTD) += sf_mtd.o
 obj-$(CONFIG_SPI_FLASH_SANDBOX) += sandbox.o
diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
index c2e51f9c68..444770f3e5 100644
--- a/drivers/mtd/spi/sf_probe.c
+++ b/drivers/mtd/spi/sf_probe.c
@@ -54,7 +54,7 @@  err_read_id:
 	return ret;
 }
 
-#ifndef CONFIG_DM_SPI_FLASH
+#if !CONFIG_IS_ENABLED(DM_SPI_FLASH)
 struct spi_flash *spi_flash_probe(unsigned int busnum, unsigned int cs,
 				  unsigned int max_hz, unsigned int spi_mode)
 {
diff --git a/drivers/net/fm/fm.c b/drivers/net/fm/fm.c
index 8ab1816395..bbb1738c4b 100644
--- a/drivers/net/fm/fm.c
+++ b/drivers/net/fm/fm.c
@@ -383,7 +383,7 @@  int fm_init_common(int index, struct ccsr_fman *reg)
 		addr = malloc(CONFIG_SYS_QE_FMAN_FW_LENGTH);
 		int ret = 0;
 
-#ifdef CONFIG_DM_SPI_FLASH
+#if CONFIG_IS_ENABLED(DM_SPI_FLASH)
 		struct udevice *new;
 
 		/* speed and mode will be read from DT */
@@ -470,7 +470,7 @@  int fm_init_common(int index, struct ccsr_fman *reg)
 	void *addr = malloc(CONFIG_SYS_QE_FMAN_FW_LENGTH);
 	int ret = 0;
 
-#ifdef CONFIG_DM_SPI_FLASH
+#if CONFIG_IS_ENABLED(DM_SPI_FLASH)
 	struct udevice *new;
 
 	/* speed and mode will be read from DT */
diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
index 6441694c8d..11d8d22cef 100644
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
@@ -4,7 +4,7 @@ 
 # Wolfgang Denk, DENX Software Engineering, wd at denx.de.
 
 # There are many options which enable SPI, so make this library available
-ifdef CONFIG_DM_SPI
+ifdef CONFIG_$(SPL_TPL_)DM_SPI
 obj-y += spi-uclass.o
 obj-$(CONFIG_SANDBOX) += spi-emul-uclass.o
 obj-$(CONFIG_SOFT_SPI) += soft_spi.o
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c
index f076e92a93..e2f2b3be44 100644
--- a/drivers/spi/atmel_spi.c
+++ b/drivers/spi/atmel_spi.c
@@ -14,7 +14,7 @@ 
 
 #include <asm/arch/clk.h>
 #include <asm/arch/hardware.h>
-#ifdef CONFIG_DM_SPI
+#if CONFIG_IS_ENABLED(DM_SPI)
 #include <asm/arch/at91_spi.h>
 #endif
 #if CONFIG_IS_ENABLED(DM_GPIO)
@@ -23,7 +23,7 @@ 
 
 #include "atmel_spi.h"
 
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 
 static int spi_has_wdrbt(struct atmel_spi_slave *slave)
 {
diff --git a/drivers/spi/davinci_spi.c b/drivers/spi/davinci_spi.c
index 97ac97b1a5..f619534764 100644
--- a/drivers/spi/davinci_spi.c
+++ b/drivers/spi/davinci_spi.c
@@ -55,7 +55,7 @@ 
 /* SPIDEF */
 #define SPIDEF_CSDEF0_MASK	BIT(0)
 
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 #define SPI0_BUS		0
 #define SPI0_BASE		CONFIG_SYS_SPI_BASE
 /*
@@ -122,7 +122,7 @@  struct davinci_spi_regs {
 
 /* davinci spi slave */
 struct davinci_spi_slave {
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 	struct spi_slave slave;
 #endif
 	struct davinci_spi_regs *regs;
@@ -346,7 +346,7 @@  out:
 	return 0;
 }
 
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 
 static inline struct davinci_spi_slave *to_davinci_spi(struct spi_slave *slave)
 {
diff --git a/drivers/spi/fsl_dspi.c b/drivers/spi/fsl_dspi.c
index 1cdb233110..d9575aaf54 100644
--- a/drivers/spi/fsl_dspi.c
+++ b/drivers/spi/fsl_dspi.c
@@ -100,7 +100,7 @@  struct fsl_dspi_priv {
 	struct dspi *regs;
 };
 
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 struct fsl_dspi {
 	struct spi_slave slave;
 	struct fsl_dspi_priv priv;
@@ -414,7 +414,8 @@  static int fsl_dspi_cfg_speed(struct fsl_dspi_priv *priv, uint speed)
 
 	return 0;
 }
-#ifndef CONFIG_DM_SPI
+
+#if !CONFIG_IS_ENABLED(DM_SPI)
 int spi_cs_is_valid(unsigned int bus, unsigned int cs)
 {
 	if (((cs >= 0) && (cs < 8)) && ((bus >= 0) && (bus < 8)))
diff --git a/drivers/spi/kirkwood_spi.c b/drivers/spi/kirkwood_spi.c
index 01fcf6bef5..60ca09f2ac 100644
--- a/drivers/spi/kirkwood_spi.c
+++ b/drivers/spi/kirkwood_spi.c
@@ -94,7 +94,7 @@  static int _spi_xfer(struct kwspi_registers *reg, unsigned int bitlen,
 	return 0;
 }
 
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 
 static struct kwspi_registers *spireg =
 	(struct kwspi_registers *)MVEBU_SPI_BASE;
diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c
index f52ebf4d67..aad3780365 100644
--- a/drivers/spi/mxc_spi.c
+++ b/drivers/spi/mxc_spi.c
@@ -67,7 +67,7 @@  static inline struct mxc_spi_slave *to_mxc_spi_slave(struct spi_slave *slave)
 
 static void mxc_spi_cs_activate(struct mxc_spi_slave *mxcs)
 {
-#if defined(CONFIG_DM_SPI)
+#if CONFIG_IS_ENABLED(DM_SPI)
 	struct udevice *dev = mxcs->dev;
 	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
 
@@ -85,7 +85,7 @@  static void mxc_spi_cs_activate(struct mxc_spi_slave *mxcs)
 
 static void mxc_spi_cs_deactivate(struct mxc_spi_slave *mxcs)
 {
-#if defined(CONFIG_DM_SPI)
+#if CONFIG_IS_ENABLED(DM_SPI)
 	struct udevice *dev = mxcs->dev;
 	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
 
@@ -415,7 +415,7 @@  static int mxc_spi_claim_bus_internal(struct mxc_spi_slave *mxcs, int cs)
 	return 0;
 }
 
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
 		void *din, unsigned long flags)
 {
diff --git a/drivers/spi/omap3_spi.c b/drivers/spi/omap3_spi.c
index 6a615d1498..ae08531f1e 100644
--- a/drivers/spi/omap3_spi.c
+++ b/drivers/spi/omap3_spi.c
@@ -109,7 +109,7 @@  struct mcspi {
 };
 
 struct omap3_spi_priv {
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 	struct spi_slave slave;
 #endif
 	struct mcspi *regs;
@@ -455,7 +455,7 @@  static void _omap3_spi_claim_bus(struct omap3_spi_priv *priv)
 	writel(conf, &priv->regs->modulctrl);
 }
 
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 
 static inline struct omap3_spi_priv *to_omap3_spi(struct spi_slave *slave)
 {
diff --git a/drivers/spi/sh_qspi.c b/drivers/spi/sh_qspi.c
index 2839dd1ceb..aa1c03047e 100644
--- a/drivers/spi/sh_qspi.c
+++ b/drivers/spi/sh_qspi.c
@@ -68,7 +68,7 @@  struct sh_qspi_regs {
 };
 
 struct sh_qspi_slave {
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 	struct spi_slave	slave;
 #endif
 	struct sh_qspi_regs	*regs;
@@ -223,7 +223,7 @@  static int sh_qspi_xfer_common(struct sh_qspi_slave *ss, unsigned int bitlen,
 	return ret;
 }
 
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 static inline struct sh_qspi_slave *to_sh_qspi(struct spi_slave *slave)
 {
 	return container_of(slave, struct sh_qspi_slave, slave);
diff --git a/env/sf.c b/env/sf.c
index 23de5a3495..a4106807c7 100644
--- a/env/sf.c
+++ b/env/sf.c
@@ -38,7 +38,7 @@  static struct spi_flash *env_flash;
 
 static int setup_flash_device(void)
 {
-#ifdef CONFIG_DM_SPI_FLASH
+#if CONFIG_IS_ENABLED(DM_SPI_FLASH)
 	struct udevice *new;
 	int	ret;
 
diff --git a/include/spi.h b/include/spi.h
index 5cc6d6e008..9b4fb8dc0b 100644
--- a/include/spi.h
+++ b/include/spi.h
@@ -39,7 +39,7 @@ 
 
 #define SPI_DEFAULT_WORDLEN	8
 
-#ifdef CONFIG_DM_SPI
+#if CONFIG_IS_ENABLED(DM_SPI)
 /* TODO(sjg at chromium.org): Remove this and use max_hz from struct spi_slave */
 struct dm_spi_bus {
 	uint max_hz;
@@ -131,7 +131,7 @@  enum spi_polarity {
  * @flags:		Indication of SPI flags.
  */
 struct spi_slave {
-#ifdef CONFIG_DM_SPI
+#if CONFIG_IS_ENABLED(DM_SPI)
 	struct udevice *dev;	/* struct spi_slave is dev->parentdata */
 	uint max_hz;
 	uint speed;
@@ -317,7 +317,7 @@  void spi_flash_copy_mmap(void *data, void *offset, size_t len);
  */
 int spi_cs_is_valid(unsigned int bus, unsigned int cs);
 
-#ifndef CONFIG_DM_SPI
+#if !CONFIG_IS_ENABLED(DM_SPI)
 /**
  * Activate a SPI chipselect.
  * This function is provided by the board code when using a driver
@@ -367,7 +367,7 @@  static inline int spi_w8r8(struct spi_slave *slave, unsigned char byte)
 	return ret < 0 ? ret : din[1];
 }
 
-#ifdef CONFIG_DM_SPI
+#if CONFIG_IS_ENABLED(DM_SPI)
 
 /**
  * struct spi_cs_info - Information about a bus chip select
diff --git a/include/spi_flash.h b/include/spi_flash.h
index 0b23f57a71..e8348adec2 100644
--- a/include/spi_flash.h
+++ b/include/spi_flash.h
@@ -52,7 +52,7 @@  struct dm_spi_flash_ops {
 /* Access the serial operations for a device */
 #define sf_get_ops(dev) ((struct dm_spi_flash_ops *)(dev)->driver->ops)
 
-#ifdef CONFIG_DM_SPI_FLASH
+#if CONFIG_IS_ENABLED(DM_SPI_FLASH)
 /**
  * spi_flash_read_dm() - Read data from SPI flash
  *
diff --git a/test/dm/spi.c b/test/dm/spi.c
index 8e417acc5f..474008cde0 100644
--- a/test/dm/spi.c
+++ b/test/dm/spi.c
@@ -117,7 +117,7 @@  static int dm_test_spi_xfer(struct unit_test_state *uts)
 	 * Since we are about to destroy all devices, we must tell sandbox
 	 * to forget the emulation device
 	 */
-#ifdef CONFIG_DM_SPI_FLASH
+#if CONFIG_IS_ENABLED(DM_SPI_FLASH)
 	sandbox_sf_unbind_emul(state_get_current(), busnum, cs);
 #endif