All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model
@ 2017-06-05 19:14 Simon Glass
  2017-06-05 19:14 ` [U-Boot] [PATCH 01/29] configs: Resync with savedefconfig Simon Glass
                   ` (28 more replies)
  0 siblings, 29 replies; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

At present U-Boot has a SCSI uclass but it does not have any operations.
The global scsi_exec() function is still used to execute SCSI commands.

This series tidies this up with the following changes:
- Move CONFIG_SCSI and CONFIG_CMD_SATA to use Kconfig
- Move SCSI and SATA code into separate drivers/ directories
- Add operations to the SCSI uclass
- Add driver-model support to AHCI
- Move link over to use CONFIG_DM_SCSI
- Drops an old SCSI driver for a single board that will likely be removed

More work is still needed, such as adding operations to the AHCI uclass,
but from what I can tell this can be done as a separate step.


Simon Glass (29):
  configs: Resync with savedefconfig
  Convert CONFIG_SCSI to Kconfig
  scsi: Drop sym53c8xx driver
  scsi: Drop scsi_print_error()
  Convert CONFIG_CMD_SATA to Kconfig
  Kconfig: Add CONFIG_SATA to enable SATA
  sata: Move drivers into new drivers/ata directory
  scsi: Move drivers into new drivers/scsi directory
  dm: scsi: Rearrange header file for driver model
  dm: scsi: Rename struct SCSI_cmd_block to struct scsi_cmd
  dm: scsi: Drop the ccb typedef
  dm: scsi: Use the uclass platform data
  dm: ahci: Rename struct ahci_probe_ent
  dm: sata: Move ataid into struct ahci_uc_priv
  dm: ahci: Refactor to avoid static variables
  dm: scsi: Indent the confusing #ifdefs
  dm: ahci: Move common code for starting ports into a function
  dm: ahci: Unwind the confusing init code
  dm: ahci: Drop use of probe_ent
  dm: scsi: Add operations
  dm: scsi: Add a device pointer to scan_exec(), scsi_bus_reset()
  dm: scsi: Document and rename the scsi_scan() parameter
  dm: ahci: Create a local version of two SCSI functions
  dm: scsi: Add operations for SCSI devices
  dm: scsi: Adjust return value of scsi_exec()
  dm: scsi: Split out the bus scanning code
  dm: ahci: Add a driver for SCSI on AHCI
  dm: scsi: Drop scsi_init() when driver model is used
  RFC: x86: Move link to use driver model for SCSI

 README                                             |   6 -
 api/api_storage.c                                  |   2 +-
 arch/Kconfig                                       |   2 +
 arch/arm/Kconfig                                   |  10 +
 arch/arm/cpu/armv7/ls102xa/Kconfig                 |   1 +
 arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c          |   2 +-
 arch/arm/cpu/armv7/mx6/Kconfig                     |   4 +
 arch/arm/cpu/armv7/mx6/clock.c                     |   6 +-
 arch/arm/cpu/armv8/fsl-layerscape/Kconfig          |   2 +
 arch/arm/cpu/armv8/fsl-layerscape/soc.c            |   4 +-
 arch/arm/imx-common/Makefile                       |   2 +-
 arch/arm/imx-common/cpu.c                          |   2 +-
 arch/arm/include/asm/arch-ls102xa/config.h         |   1 -
 arch/arm/mach-mvebu/Kconfig                        |   4 +
 arch/arm/mach-omap2/omap5/Kconfig                  |   2 +
 arch/arm/mach-omap2/sata.c                         |   4 +-
 arch/powerpc/cpu/mpc83xx/Kconfig                   |   1 +
 arch/powerpc/cpu/mpc85xx/Kconfig                   |  46 ++
 arch/powerpc/cpu/mpc85xx/cpu_init.c                |   4 +-
 arch/powerpc/cpu/mpc86xx/Kconfig                   |   1 +
 arch/x86/cpu/ivybridge/sata.c                      |  38 +-
 board/advantech/dms-ba16/dms-ba16.c                |   2 +-
 board/bachmann/ot1200/ot1200.c                     |   2 +-
 board/boundary/nitrogen6x/nitrogen6x.c             |   2 +-
 board/congatec/Kconfig                             |   1 +
 board/congatec/cgtqmx6eval/cgtqmx6eval.c           |   2 +-
 board/dfi/Kconfig                                  |   1 +
 board/gateworks/gw_ventana/gw_ventana.c            |   2 +-
 board/highbank/ahci.c                              |   2 +-
 board/highbank/highbank.c                          |   2 +-
 board/kosagi/novena/novena.c                       |   2 +-
 board/mpl/pip405/README                            |   5 +-
 board/toradex/apalis_imx6/apalis_imx6.c            |   2 +-
 board/toradex/colibri_imx6/colibri_imx6.c          |   2 +-
 board/udoo/udoo.c                                  |   2 +-
 board/wandboard/wandboard.c                        |   2 +-
 cmd/Kconfig                                        |  13 +
 cmd/scsi.c                                         |   6 +-
 common/Makefile                                    |   5 -
 common/spl/spl_sata.c                              |   2 +-
 common/splash_source.c                             |   2 +-
 common/usb_storage.c                               |  44 +-
 configs/A10-OLinuXino-Lime_defconfig               |   1 +
 configs/A20-OLinuXino-Lime2_defconfig              |   1 +
 configs/A20-OLinuXino-Lime_defconfig               |   1 +
 configs/A20-OLinuXino_MICRO_defconfig              |   1 +
 configs/A20-Olimex-SOM-EVB_defconfig               |   1 +
 configs/Bananapi_M2_Ultra_defconfig                |   1 +
 configs/Bananapi_defconfig                         |   1 +
 configs/Bananapro_defconfig                        |   1 +
 configs/Cubieboard2_defconfig                      |   1 +
 configs/Cubieboard_defconfig                       |   1 +
 configs/Cubietruck_defconfig                       |   1 +
 configs/Itead_Ibox_A20_defconfig                   |   1 +
 configs/Lamobo_R1_defconfig                        |   1 +
 configs/Linksprite_pcDuino3_Nano_defconfig         |   1 +
 configs/Linksprite_pcDuino3_defconfig              |   1 +
 configs/MPC8315ERDB_defconfig                      |   1 +
 configs/MPC8349ITX_LOWBOOT_defconfig               |   1 +
 configs/MPC8349ITX_defconfig                       |   1 +
 configs/MPC837XERDB_defconfig                      |   1 +
 configs/MPC8544DS_defconfig                        |   1 +
 configs/MPC8610HPCD_defconfig                      |   1 +
 configs/Marsboard_A10_defconfig                    |   1 +
 configs/Mele_A1000_defconfig                       |   1 +
 configs/Mele_M5_defconfig                          |   1 +
 configs/Orangepi_defconfig                         |   1 +
 configs/Orangepi_mini_defconfig                    |   1 +
 configs/Sinovoip_BPI_M2_Plus_defconfig             |   1 -
 configs/UCP1020_SPIFLASH_defconfig                 |   2 +-
 configs/UCP1020_defconfig                          |   2 +-
 configs/Wits_Pro_A20_DKT_defconfig                 |   1 +
 configs/adp-ae3xx_defconfig                        |   6 +-
 configs/adp-ag101p_defconfig                       |   6 +-
 configs/am335x_baltos_defconfig                    |   4 +-
 configs/am335x_boneblack_vboot_defconfig           |   1 -
 configs/am335x_evm_defconfig                       |   1 -
 configs/am335x_hs_evm_defconfig                    |   4 -
 configs/am335x_igep003x_defconfig                  |   6 +-
 configs/am335x_shc_defconfig                       |   4 +-
 configs/am335x_shc_ict_defconfig                   |   4 +-
 configs/am335x_shc_netboot_defconfig               |   4 +-
 configs/am335x_shc_prompt_defconfig                |   4 +-
 configs/am335x_shc_sdboot_defconfig                |   4 +-
 configs/am335x_shc_sdboot_prompt_defconfig         |   4 +-
 configs/am335x_sl50_defconfig                      |   4 +-
 configs/am43xx_evm_defconfig                       |   3 +-
 configs/am43xx_evm_usbhost_boot_defconfig          |   1 -
 configs/am43xx_hs_evm_defconfig                    |   3 +-
 configs/am57xx_evm_defconfig                       |   5 +-
 configs/am57xx_hs_evm_defconfig                    |   5 +-
 configs/at91sam9263ek_norflash_boot_defconfig      |   2 +-
 configs/at91sam9263ek_norflash_defconfig           |   2 +-
 configs/bayleybay_defconfig                        |   1 +
 configs/bcm958622hr_defconfig                      |   2 +-
 configs/birdland_bav335a_defconfig                 |   2 +-
 configs/birdland_bav335b_defconfig                 |   2 +-
 configs/blanche_defconfig                          |   1 -
 configs/brppt1_mmc_defconfig                       |   2 +-
 configs/brppt1_nand_defconfig                      |   2 +-
 configs/brppt1_spi_defconfig                       |   2 +-
 configs/brxre1_defconfig                           |   2 +-
 configs/canyonlands_defconfig                      |   1 +
 configs/cgtqmx6eval_defconfig                      |   1 +
 configs/chiliboard_defconfig                       |   4 +-
 configs/chromebook_link64_defconfig                |   1 +
 configs/chromebook_link_defconfig                  |   3 +
 configs/chromebook_minnie_defconfig                |   2 +-
 configs/chromebook_samus_defconfig                 |   1 +
 configs/chromebox_panther_defconfig                |   1 +
 configs/clearfog_defconfig                         |   2 -
 configs/cm_fx6_defconfig                           |   3 +-
 configs/cm_t335_defconfig                          |   2 +-
 configs/cm_t43_defconfig                           |   2 +-
 configs/cm_t54_defconfig                           |   1 +
 configs/colibri_imx7_defconfig                     |   2 +-
 configs/colibri_vf_defconfig                       |   2 +-
 configs/comtrend_ar5387un_ram_defconfig            |  66 +-
 configs/comtrend_ct5361_ram_defconfig              |  68 +-
 configs/comtrend_vr3032u_ram_defconfig             |  66 +-
 .../controlcenterd_36BIT_SDCARD_DEVELOP_defconfig  |   1 +
 configs/controlcenterd_36BIT_SDCARD_defconfig      |   1 +
 configs/controlcenterdc_defconfig                  |   1 +
 configs/cougarcanyon2_defconfig                    |   1 +
 configs/crownbay_defconfig                         |   1 +
 configs/db-88f6820-gp_defconfig                    |   1 +
 configs/db-mv784mp-gp_defconfig                    |   1 +
 configs/dra7xx_evm_defconfig                       |  12 +-
 configs/dra7xx_hs_evm_defconfig                    |   9 +-
 configs/evb-ast2500_defconfig                      |  12 +-
 configs/evb-rk3399_defconfig                       |   5 +-
 configs/firefly-rk3399_defconfig                   |   1 -
 configs/gwventana_emmc_defconfig                   |   2 +-
 configs/gwventana_gw5904_defconfig                 |   2 +-
 configs/gwventana_nand_defconfig                   |   2 +-
 configs/highbank_defconfig                         |   1 +
 configs/huawei_hg556a_ram_defconfig                |  67 +-
 configs/imx6qdl_icore_mmc_defconfig                |   4 +-
 configs/imx6qdl_icore_rqs_mmc_defconfig            |   2 +-
 configs/k2e_evm_defconfig                          |   5 +-
 configs/k2e_hs_evm_defconfig                       |   3 +-
 configs/k2g_evm_defconfig                          |   5 +-
 configs/k2g_hs_evm_defconfig                       |   6 +-
 configs/k2hk_evm_defconfig                         |   4 +-
 configs/k2hk_hs_evm_defconfig                      |   3 +-
 configs/k2l_evm_defconfig                          |   4 +-
 configs/ls1012aqds_qspi_defconfig                  |   1 +
 configs/ls2081ardb_defconfig                       |  14 +-
 configs/ls2088ardb_qspi_defconfig                  |  13 +-
 configs/m53evk_defconfig                           |   3 +-
 configs/minnowmax_defconfig                        |   1 +
 configs/mx51evk_defconfig                          |   2 +-
 configs/mx53cx9020_defconfig                       |   2 +-
 configs/mx53loco_defconfig                         |   3 +-
 configs/mx6cuboxi_defconfig                        |   2 +-
 configs/mx6qsabrelite_defconfig                    |   1 +
 configs/mx6sxsabresd_defconfig                     |   2 +-
 configs/mx6sxsabresd_spl_defconfig                 |   2 +-
 configs/mx7dsabresd_defconfig                      |   2 +-
 configs/nanopi_neo_air_defconfig                   |   2 +-
 configs/nanopi_neo_defconfig                       |   2 +-
 configs/netgear_cg3100d_ram_defconfig              |  66 +-
 configs/nitrogen6q2g_defconfig                     |   1 +
 configs/nitrogen6q_defconfig                       |   1 +
 configs/novena_defconfig                           |   3 +-
 configs/omap3_logic_defconfig                      |   1 -
 configs/omap5_uevm_defconfig                       |   1 +
 configs/opos6uldev_defconfig                       |   2 +-
 configs/orangepi_2_defconfig                       |   1 -
 configs/orangepi_lite_defconfig                    |   1 -
 configs/orangepi_one_defconfig                     |   1 -
 configs/orangepi_pc2_defconfig                     |   1 -
 configs/orangepi_pc_defconfig                      |   1 -
 configs/orangepi_pc_plus_defconfig                 |   1 -
 configs/orangepi_plus2e_defconfig                  |   1 -
 configs/orangepi_plus_defconfig                    |   1 -
 configs/orangepi_zero_defconfig                    |   2 +-
 configs/pcm051_rev1_defconfig                      |   2 +-
 configs/pcm051_rev3_defconfig                      |   2 +-
 configs/pengwyn_defconfig                          |   2 +-
 configs/pepper_defconfig                           |   2 +-
 configs/pine64_plus_defconfig                      |   3 +-
 configs/puma-rk3399_defconfig                      |   1 -
 configs/pxm2_defconfig                             |   2 +-
 configs/r8a7795_salvator-x_defconfig               |  19 +-
 configs/r8a7796_salvator-x_defconfig               |  20 +-
 configs/rut_defconfig                              |   2 +-
 configs/sagem_f at st1704_ram_defconfig               |  66 +-
 configs/sama5d2_xplained_mmc_defconfig             |   4 +-
 configs/sama5d2_xplained_spiflash_defconfig        |   2 +-
 configs/sandbox_defconfig                          |   9 +-
 configs/sandbox_flattree_defconfig                 |  11 +-
 configs/sandbox_noblk_defconfig                    |   5 +-
 configs/sandbox_spl_defconfig                      |   4 +-
 configs/sfr_nb4-ser_ram_defconfig                  |  66 +-
 configs/som-db5800-som-6867_defconfig              |   1 +
 configs/stm32f746-disco_defconfig                  |  14 +-
 configs/tbs2910_defconfig                          |   3 +-
 configs/udoo_defconfig                             |   1 +
 configs/wandboard_defconfig                        |   1 +
 configs/xilinx_zynqmp_ep_defconfig                 |   1 +
 configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig   |   2 +-
 configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig   |   2 +-
 configs/xilinx_zynqmp_zcu102_defconfig             |   3 +-
 configs/xilinx_zynqmp_zcu102_revB_defconfig        |   3 +-
 drivers/Kconfig                                    |   4 +
 drivers/Makefile                                   |   4 +-
 drivers/ata/Kconfig                                |  62 ++
 drivers/ata/Makefile                               |  22 +
 drivers/{block => ata}/ahci-uclass.c               |   0
 drivers/{block => ata}/ahci.c                      | 390 ++++++----
 drivers/{block => ata}/dwc_ahci.c                  |  10 +-
 drivers/{block => ata}/dwc_ahsata.c                |  74 +-
 drivers/{block => ata}/dwc_ahsata.h                |   0
 drivers/{block => ata}/fsl_sata.c                  |   0
 drivers/{block => ata}/fsl_sata.h                  |   0
 drivers/{block => ata}/libata.c                    |   0
 drivers/{block => ata}/mvsata_ide.c                |   0
 drivers/{block => ata}/mxc_ata.c                   |   0
 {common => drivers/ata}/sata.c                     |   0
 drivers/{block => ata}/sata_ceva.c                 |   9 +-
 drivers/{block => ata}/sata_dwc.c                  |   0
 drivers/{block => ata}/sata_dwc.h                  |   0
 drivers/{block => ata}/sata_mv.c                   |   0
 drivers/{block => ata}/sata_sandbox.c              |   0
 drivers/{block => ata}/sata_sil.c                  |   0
 drivers/{block => ata}/sata_sil.h                  |   0
 drivers/{block => ata}/sata_sil3114.c              |   0
 drivers/{block => ata}/sata_sil3114.h              |   0
 drivers/block/Kconfig                              |  41 -
 drivers/block/Makefile                             |  17 +-
 drivers/block/scsi-uclass.c                        |  27 -
 drivers/block/sym53c8xx.c                          | 851 ---------------------
 drivers/scsi/Kconfig                               |  17 +
 drivers/scsi/Makefile                              |  19 +
 drivers/{block => scsi}/sandbox_scsi.c             |   9 +-
 drivers/scsi/scsi-uclass.c                         |  40 +
 {common => drivers/scsi}/scsi.c                    | 147 ++--
 drivers/usb/emul/sandbox_flash.c                   |   2 +-
 fs/fat/fat.c                                       |   2 +-
 include/ahci.h                                     |  60 +-
 include/config_cmd_all.h                           |   1 -
 include/config_distro_bootcmd.h                    |   6 +-
 include/config_fallbacks.h                         |   2 +-
 include/configs/MPC8315ERDB.h                      |   1 -
 include/configs/MPC8349ITX.h                       |   4 -
 include/configs/MPC837XEMDS.h                      |   1 -
 include/configs/MPC837XERDB.h                      |   1 -
 include/configs/MPC8536DS.h                        |   1 -
 include/configs/MPC8544DS.h                        |   1 -
 include/configs/MPC8572DS.h                        |   1 -
 include/configs/MPC8610HPCD.h                      |   1 -
 include/configs/MPC8641HPCN.h                      |   1 -
 include/configs/P1010RDB.h                         |   1 -
 include/configs/P1022DS.h                          |   1 -
 include/configs/P2041RDB.h                         |   1 -
 include/configs/P4080DS.h                          |   1 -
 include/configs/PIP405.h                           |  10 -
 include/configs/T102xQDS.h                         |   1 -
 include/configs/T1040QDS.h                         |   1 -
 include/configs/T104xRDB.h                         |   1 -
 include/configs/T208xQDS.h                         |   1 -
 include/configs/T208xRDB.h                         |   1 -
 include/configs/T4240QDS.h                         |   1 -
 include/configs/T4240RDB.h                         |   2 -
 include/configs/UCP1020.h                          |   1 -
 include/configs/advantech_dms-ba16.h               |   1 -
 include/configs/am57xx_evm.h                       |   1 -
 include/configs/apalis_imx6.h                      |   4 -
 include/configs/canyonlands.h                      |   1 -
 include/configs/cgtqmx6eval.h                      |   1 -
 include/configs/cm_fx6.h                           |   1 -
 include/configs/cm_t54.h                           |   1 -
 include/configs/controlcenterd.h                   |   1 -
 include/configs/controlcenterdc.h                  |   1 -
 include/configs/corenet_ds.h                       |   1 -
 include/configs/cyrus.h                            |   1 -
 include/configs/db-88f6820-gp.h                    |   1 -
 include/configs/db-mv784mp-gp.h                    |   1 -
 include/configs/dra7xx_evm.h                       |   1 -
 include/configs/efi-x86.h                          |   1 -
 include/configs/galileo.h                          |   1 -
 include/configs/gw_ventana.h                       |   1 -
 include/configs/highbank.h                         |   1 -
 include/configs/ls1012aqds.h                       |   1 -
 include/configs/ls1012ardb.h                       |   1 -
 include/configs/ls1043aqds.h                       |   1 -
 include/configs/ls1046aqds.h                       |   1 -
 include/configs/ls1046ardb.h                       |   1 -
 include/configs/ls2080aqds.h                       |   1 -
 include/configs/ls2080ardb.h                       |   1 -
 include/configs/m53evk.h                           |   1 -
 include/configs/mvebu_armada-37xx.h                |   1 -
 include/configs/mvebu_armada-8k.h                  |   1 -
 include/configs/mx53loco.h                         |   1 -
 include/configs/nitrogen6x.h                       |   4 -
 include/configs/novena.h                           |   1 -
 include/configs/omap5_uevm.h                       |   1 -
 include/configs/ot1200.h                           |   4 -
 include/configs/p1_p2_rdb_pc.h                     |   1 -
 include/configs/p1_twr.h                           |   1 -
 include/configs/qemu-x86.h                         |   1 -
 include/configs/sandbox.h                          |   2 -
 include/configs/sunxi-common.h                     |   1 -
 include/configs/t4qds.h                            |   1 -
 include/configs/tbs2910.h                          |   1 -
 include/configs/theadorable.h                      |   1 -
 include/configs/udoo.h                             |   1 -
 include/configs/wandboard.h                        |   1 -
 include/configs/x86-common.h                       |   1 -
 include/configs/xilinx_zynqmp.h                    |   1 -
 include/scsi.h                                     |  85 +-
 scripts/config_whitelist.txt                       |   4 -
 313 files changed, 1262 insertions(+), 1879 deletions(-)
 create mode 100644 drivers/ata/Kconfig
 create mode 100644 drivers/ata/Makefile
 rename drivers/{block => ata}/ahci-uclass.c (100%)
 rename drivers/{block => ata}/ahci.c (74%)
 rename drivers/{block => ata}/dwc_ahci.c (92%)
 rename drivers/{block => ata}/dwc_ahsata.c (92%)
 rename drivers/{block => ata}/dwc_ahsata.h (100%)
 rename drivers/{block => ata}/fsl_sata.c (100%)
 rename drivers/{block => ata}/fsl_sata.h (100%)
 rename drivers/{block => ata}/libata.c (100%)
 rename drivers/{block => ata}/mvsata_ide.c (100%)
 rename drivers/{block => ata}/mxc_ata.c (100%)
 rename {common => drivers/ata}/sata.c (100%)
 rename drivers/{block => ata}/sata_ceva.c (95%)
 rename drivers/{block => ata}/sata_dwc.c (100%)
 rename drivers/{block => ata}/sata_dwc.h (100%)
 rename drivers/{block => ata}/sata_mv.c (100%)
 rename drivers/{block => ata}/sata_sandbox.c (100%)
 rename drivers/{block => ata}/sata_sil.c (100%)
 rename drivers/{block => ata}/sata_sil.h (100%)
 rename drivers/{block => ata}/sata_sil3114.c (100%)
 rename drivers/{block => ata}/sata_sil3114.h (100%)
 delete mode 100644 drivers/block/scsi-uclass.c
 delete mode 100644 drivers/block/sym53c8xx.c
 create mode 100644 drivers/scsi/Kconfig
 create mode 100644 drivers/scsi/Makefile
 rename drivers/{block => scsi}/sandbox_scsi.c (75%)
 create mode 100644 drivers/scsi/scsi-uclass.c
 rename {common => drivers/scsi}/scsi.c (86%)

-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 01/29] configs: Resync with savedefconfig
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  1:21   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 02/29] Convert CONFIG_SCSI to Kconfig Simon Glass
                   ` (27 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

Rsync all defconfig files using moveconfig.py

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 configs/Sinovoip_BPI_M2_Plus_defconfig           |  1 -
 configs/UCP1020_SPIFLASH_defconfig               |  2 +-
 configs/UCP1020_defconfig                        |  2 +-
 configs/adp-ae3xx_defconfig                      |  6 +--
 configs/adp-ag101p_defconfig                     |  6 +--
 configs/am335x_baltos_defconfig                  |  4 +-
 configs/am335x_boneblack_vboot_defconfig         |  1 -
 configs/am335x_evm_defconfig                     |  1 -
 configs/am335x_hs_evm_defconfig                  |  4 --
 configs/am335x_igep003x_defconfig                |  6 +--
 configs/am335x_shc_defconfig                     |  4 +-
 configs/am335x_shc_ict_defconfig                 |  4 +-
 configs/am335x_shc_netboot_defconfig             |  4 +-
 configs/am335x_shc_prompt_defconfig              |  4 +-
 configs/am335x_shc_sdboot_defconfig              |  4 +-
 configs/am335x_shc_sdboot_prompt_defconfig       |  4 +-
 configs/am335x_sl50_defconfig                    |  4 +-
 configs/am43xx_evm_defconfig                     |  3 +-
 configs/am43xx_evm_usbhost_boot_defconfig        |  1 -
 configs/am43xx_hs_evm_defconfig                  |  3 +-
 configs/am57xx_evm_defconfig                     |  5 +-
 configs/am57xx_hs_evm_defconfig                  |  5 +-
 configs/at91sam9263ek_norflash_boot_defconfig    |  2 +-
 configs/at91sam9263ek_norflash_defconfig         |  2 +-
 configs/bcm958622hr_defconfig                    |  2 +-
 configs/birdland_bav335a_defconfig               |  2 +-
 configs/birdland_bav335b_defconfig               |  2 +-
 configs/blanche_defconfig                        |  1 -
 configs/brppt1_mmc_defconfig                     |  2 +-
 configs/brppt1_nand_defconfig                    |  2 +-
 configs/brppt1_spi_defconfig                     |  2 +-
 configs/brxre1_defconfig                         |  2 +-
 configs/chiliboard_defconfig                     |  4 +-
 configs/chromebook_minnie_defconfig              |  2 +-
 configs/clearfog_defconfig                       |  2 -
 configs/cm_fx6_defconfig                         |  2 +-
 configs/cm_t335_defconfig                        |  2 +-
 configs/cm_t43_defconfig                         |  2 +-
 configs/colibri_imx7_defconfig                   |  2 +-
 configs/colibri_vf_defconfig                     |  2 +-
 configs/comtrend_ar5387un_ram_defconfig          | 66 ++++++++++-------------
 configs/comtrend_ct5361_ram_defconfig            | 68 ++++++++++--------------
 configs/comtrend_vr3032u_ram_defconfig           | 66 ++++++++++-------------
 configs/dra7xx_evm_defconfig                     | 12 ++---
 configs/dra7xx_hs_evm_defconfig                  |  9 ++--
 configs/evb-ast2500_defconfig                    | 12 ++---
 configs/evb-rk3399_defconfig                     |  5 +-
 configs/firefly-rk3399_defconfig                 |  1 -
 configs/gwventana_emmc_defconfig                 |  2 +-
 configs/gwventana_gw5904_defconfig               |  2 +-
 configs/gwventana_nand_defconfig                 |  2 +-
 configs/huawei_hg556a_ram_defconfig              | 67 ++++++++++-------------
 configs/imx6qdl_icore_mmc_defconfig              |  4 +-
 configs/imx6qdl_icore_rqs_mmc_defconfig          |  2 +-
 configs/k2e_evm_defconfig                        |  5 +-
 configs/k2e_hs_evm_defconfig                     |  3 +-
 configs/k2g_evm_defconfig                        |  5 +-
 configs/k2g_hs_evm_defconfig                     |  6 +--
 configs/k2hk_evm_defconfig                       |  4 +-
 configs/k2hk_hs_evm_defconfig                    |  3 +-
 configs/k2l_evm_defconfig                        |  4 +-
 configs/ls2081ardb_defconfig                     | 13 ++---
 configs/ls2088ardb_qspi_defconfig                | 13 ++---
 configs/m53evk_defconfig                         |  2 +-
 configs/mx51evk_defconfig                        |  2 +-
 configs/mx53cx9020_defconfig                     |  2 +-
 configs/mx53loco_defconfig                       |  2 +-
 configs/mx6cuboxi_defconfig                      |  2 +-
 configs/mx6sxsabresd_defconfig                   |  2 +-
 configs/mx6sxsabresd_spl_defconfig               |  2 +-
 configs/mx7dsabresd_defconfig                    |  2 +-
 configs/nanopi_neo_air_defconfig                 |  2 +-
 configs/nanopi_neo_defconfig                     |  2 +-
 configs/netgear_cg3100d_ram_defconfig            | 66 ++++++++++-------------
 configs/novena_defconfig                         |  2 +-
 configs/omap3_logic_defconfig                    |  1 -
 configs/opos6uldev_defconfig                     |  2 +-
 configs/orangepi_2_defconfig                     |  1 -
 configs/orangepi_lite_defconfig                  |  1 -
 configs/orangepi_one_defconfig                   |  1 -
 configs/orangepi_pc2_defconfig                   |  1 -
 configs/orangepi_pc_defconfig                    |  1 -
 configs/orangepi_pc_plus_defconfig               |  1 -
 configs/orangepi_plus2e_defconfig                |  1 -
 configs/orangepi_plus_defconfig                  |  1 -
 configs/orangepi_zero_defconfig                  |  2 +-
 configs/pcm051_rev1_defconfig                    |  2 +-
 configs/pcm051_rev3_defconfig                    |  2 +-
 configs/pengwyn_defconfig                        |  2 +-
 configs/pepper_defconfig                         |  2 +-
 configs/pine64_plus_defconfig                    |  3 +-
 configs/puma-rk3399_defconfig                    |  1 -
 configs/pxm2_defconfig                           |  2 +-
 configs/r8a7795_salvator-x_defconfig             | 19 ++-----
 configs/r8a7796_salvator-x_defconfig             | 20 ++-----
 configs/rut_defconfig                            |  2 +-
 configs/sagem_f at st1704_ram_defconfig             | 66 ++++++++++-------------
 configs/sama5d2_xplained_mmc_defconfig           |  4 +-
 configs/sama5d2_xplained_spiflash_defconfig      |  2 +-
 configs/sandbox_defconfig                        |  9 ++--
 configs/sandbox_flattree_defconfig               | 11 ++--
 configs/sandbox_noblk_defconfig                  |  5 +-
 configs/sandbox_spl_defconfig                    |  4 +-
 configs/sfr_nb4-ser_ram_defconfig                | 66 ++++++++++-------------
 configs/stm32f746-disco_defconfig                | 14 ++---
 configs/tbs2910_defconfig                        |  2 +-
 configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig |  2 +-
 configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig |  2 +-
 configs/xilinx_zynqmp_zcu102_defconfig           |  2 +-
 configs/xilinx_zynqmp_zcu102_revB_defconfig      |  2 +-
 110 files changed, 337 insertions(+), 499 deletions(-)

diff --git a/configs/Sinovoip_BPI_M2_Plus_defconfig b/configs/Sinovoip_BPI_M2_Plus_defconfig
index e8cd4fb9ec..651a2ff4ce 100644
--- a/configs/Sinovoip_BPI_M2_Plus_defconfig
+++ b/configs/Sinovoip_BPI_M2_Plus_defconfig
@@ -8,7 +8,6 @@ CONFIG_MACPWR="PD6"
 CONFIG_MMC_SUNXI_SLOT_EXTRA=2
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-bananapi-m2-plus"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
diff --git a/configs/UCP1020_SPIFLASH_defconfig b/configs/UCP1020_SPIFLASH_defconfig
index 2fc8d86046..29bf82a456 100644
--- a/configs/UCP1020_SPIFLASH_defconfig
+++ b/configs/UCP1020_SPIFLASH_defconfig
@@ -20,8 +20,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
-# CONFIG_CMD_HASH is not set
 CONFIG_CMD_DATE=y
+# CONFIG_CMD_HASH is not set
 CONFIG_CMD_CRAMFS=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
diff --git a/configs/UCP1020_defconfig b/configs/UCP1020_defconfig
index 63f1a9d005..dbf073d774 100644
--- a/configs/UCP1020_defconfig
+++ b/configs/UCP1020_defconfig
@@ -20,8 +20,8 @@ CONFIG_CMD_GPIO=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
-# CONFIG_CMD_HASH is not set
 CONFIG_CMD_DATE=y
+# CONFIG_CMD_HASH is not set
 CONFIG_CMD_CRAMFS=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
diff --git a/configs/adp-ae3xx_defconfig b/configs/adp-ae3xx_defconfig
index cbef412764..d47ad86fee 100644
--- a/configs/adp-ae3xx_defconfig
+++ b/configs/adp-ae3xx_defconfig
@@ -12,16 +12,16 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
-CONFIG_MMC=y
-CONFIG_MTD_NOR_FLASH=y
-CONFIG_BAUDRATE=38400
 CONFIG_OF_CONTROL=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
+CONFIG_MMC=y
 CONFIG_MTD=y
+CONFIG_MTD_NOR_FLASH=y
 CONFIG_CFI_FLASH=y
 CONFIG_DM_ETH=y
 CONFIG_FTMAC100=y
+CONFIG_BAUDRATE=38400
 CONFIG_DM_SERIAL=y
 CONFIG_SYS_NS16550=y
 CONFIG_TIMER=y
diff --git a/configs/adp-ag101p_defconfig b/configs/adp-ag101p_defconfig
index 22b1182fef..6ce9e809dd 100644
--- a/configs/adp-ag101p_defconfig
+++ b/configs/adp-ag101p_defconfig
@@ -12,14 +12,14 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
-CONFIG_MMC=y
-CONFIG_MTD_NOR_FLASH=y
-CONFIG_BAUDRATE=38400
 CONFIG_OF_CONTROL=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
+CONFIG_MMC=y
+CONFIG_MTD_NOR_FLASH=y
 CONFIG_DM_ETH=y
 CONFIG_FTMAC100=y
+CONFIG_BAUDRATE=38400
 CONFIG_DM_SERIAL=y
 CONFIG_SYS_NS16550=y
 CONFIG_TIMER=y
diff --git a/configs/am335x_baltos_defconfig b/configs/am335x_baltos_defconfig
index f210cca87f..b69ba8fefa 100644
--- a/configs/am335x_baltos_defconfig
+++ b/configs/am335x_baltos_defconfig
@@ -10,9 +10,8 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
@@ -24,6 +23,7 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_MTD_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/am335x_boneblack_vboot_defconfig b/configs/am335x_boneblack_vboot_defconfig
index 198efb4892..487461efe7 100644
--- a/configs/am335x_boneblack_vboot_defconfig
+++ b/configs/am335x_boneblack_vboot_defconfig
@@ -30,7 +30,6 @@ CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/am335x_evm_defconfig b/configs/am335x_evm_defconfig
index 962bb65443..340863ff5b 100644
--- a/configs/am335x_evm_defconfig
+++ b/configs/am335x_evm_defconfig
@@ -28,7 +28,6 @@ CONFIG_DFU_RAM=y
 CONFIG_DM_I2C=y
 CONFIG_MISC=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
diff --git a/configs/am335x_hs_evm_defconfig b/configs/am335x_hs_evm_defconfig
index 73c9d012fd..9677f0535b 100644
--- a/configs/am335x_hs_evm_defconfig
+++ b/configs/am335x_hs_evm_defconfig
@@ -17,7 +17,6 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
 CONFIG_SPL=y
-CONFIG_SPL_SYS_MALLOC_SIMPLE=y
 CONFIG_SPL_STACK_R=y
 # CONFIG_SPL_EXT_SUPPORT is not set
 CONFIG_SPL_MTD_SUPPORT=y
@@ -35,7 +34,6 @@ CONFIG_DFU_RAM=y
 CONFIG_DM_I2C=y
 CONFIG_MISC=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
@@ -54,6 +52,4 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
-CONFIG_USE_TINY_PRINTF=y
 CONFIG_RSA=y
-CONFIG_SPL_OF_LIBFDT=y
diff --git a/configs/am335x_igep003x_defconfig b/configs/am335x_igep003x_defconfig
index 651e194ae6..df7d1c69af 100644
--- a/configs/am335x_igep003x_defconfig
+++ b/configs/am335x_igep003x_defconfig
@@ -3,17 +3,16 @@ CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
-CONFIG_AM33XX=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_AM33XX=y
 CONFIG_TARGET_AM335X_IGEP003X=y
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0033"
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -23,6 +22,7 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_MTD_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/am335x_shc_defconfig b/configs/am335x_shc_defconfig
index ab912bbc53..4bd1b65880 100644
--- a/configs/am335x_shc_defconfig
+++ b/configs/am335x_shc_defconfig
@@ -9,10 +9,9 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SERIES=y
-CONFIG_SPL_POWER_SUPPORT=y
-CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -20,6 +19,7 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="U-Boot# "
diff --git a/configs/am335x_shc_ict_defconfig b/configs/am335x_shc_ict_defconfig
index 7d75c5cc7a..1025cd1d5c 100644
--- a/configs/am335x_shc_ict_defconfig
+++ b/configs/am335x_shc_ict_defconfig
@@ -9,11 +9,10 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SHC_ICT=y
 CONFIG_SERIES=y
-CONFIG_SPL_POWER_SUPPORT=y
-CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -21,6 +20,7 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_SYS_PROMPT="U-Boot# "
 CONFIG_AUTOBOOT_KEYED=y
diff --git a/configs/am335x_shc_netboot_defconfig b/configs/am335x_shc_netboot_defconfig
index 322a070dea..0011234d55 100644
--- a/configs/am335x_shc_netboot_defconfig
+++ b/configs/am335x_shc_netboot_defconfig
@@ -9,11 +9,10 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SHC_NETBOOT=y
 CONFIG_SERIES=y
-CONFIG_SPL_POWER_SUPPORT=y
-CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -22,6 +21,7 @@ CONFIG_SPL_ENV_SUPPORT=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_SYS_PROMPT="U-Boot# "
 CONFIG_AUTOBOOT_KEYED=y
diff --git a/configs/am335x_shc_prompt_defconfig b/configs/am335x_shc_prompt_defconfig
index c5d8dcae87..a6c617f87e 100644
--- a/configs/am335x_shc_prompt_defconfig
+++ b/configs/am335x_shc_prompt_defconfig
@@ -9,10 +9,9 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SERIES=y
-CONFIG_SPL_POWER_SUPPORT=y
-CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -20,6 +19,7 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_AUTOBOOT_KEYED=y
 CONFIG_AUTOBOOT_PROMPT="Enter 'shc' to enter prompt (times out) %d \nEnter 'noautoboot' to enter prompt without timeout\n"
diff --git a/configs/am335x_shc_sdboot_defconfig b/configs/am335x_shc_sdboot_defconfig
index 185258de08..fa231543a2 100644
--- a/configs/am335x_shc_sdboot_defconfig
+++ b/configs/am335x_shc_sdboot_defconfig
@@ -9,11 +9,10 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SHC_SDBOOT=y
 CONFIG_SERIES=y
-CONFIG_SPL_POWER_SUPPORT=y
-CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -21,6 +20,7 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_SYS_PROMPT="U-Boot# "
 CONFIG_AUTOBOOT_KEYED=y
diff --git a/configs/am335x_shc_sdboot_prompt_defconfig b/configs/am335x_shc_sdboot_prompt_defconfig
index 185258de08..fa231543a2 100644
--- a/configs/am335x_shc_sdboot_prompt_defconfig
+++ b/configs/am335x_shc_sdboot_prompt_defconfig
@@ -9,11 +9,10 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SHC_SDBOOT=y
 CONFIG_SERIES=y
-CONFIG_SPL_POWER_SUPPORT=y
-CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -21,6 +20,7 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_SYS_PROMPT="U-Boot# "
 CONFIG_AUTOBOOT_KEYED=y
diff --git a/configs/am335x_sl50_defconfig b/configs/am335x_sl50_defconfig
index 86035d2897..02ce013004 100644
--- a/configs/am335x_sl50_defconfig
+++ b/configs/am335x_sl50_defconfig
@@ -9,9 +9,8 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="EMMC_BOOT"
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -22,6 +21,7 @@ CONFIG_SPL_ENV_SUPPORT=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 # CONFIG_AUTOBOOT is not set
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/am43xx_evm_defconfig b/configs/am43xx_evm_defconfig
index 4d9ec8841f..e6e9731680 100644
--- a/configs/am43xx_evm_defconfig
+++ b/configs/am43xx_evm_defconfig
@@ -1,8 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
+CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_AM43XX=y
-CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_TARGET_AM43XX_EVM=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DEFAULT_DEVICE_TREE="am437x-gp-evm"
@@ -28,7 +28,6 @@ CONFIG_DFU_RAM=y
 CONFIG_DFU_SF=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
diff --git a/configs/am43xx_evm_usbhost_boot_defconfig b/configs/am43xx_evm_usbhost_boot_defconfig
index 870ed0fb24..c9bf3bf02c 100644
--- a/configs/am43xx_evm_usbhost_boot_defconfig
+++ b/configs/am43xx_evm_usbhost_boot_defconfig
@@ -50,7 +50,6 @@ CONFIG_DFU_RAM=y
 CONFIG_DFU_SF=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
diff --git a/configs/am43xx_hs_evm_defconfig b/configs/am43xx_hs_evm_defconfig
index 6f3cb516fd..ac4f422310 100644
--- a/configs/am43xx_hs_evm_defconfig
+++ b/configs/am43xx_hs_evm_defconfig
@@ -1,8 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
+CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_AM43XX=y
-CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_TI_SECURE_DEVICE=y
 CONFIG_TARGET_AM43XX_EVM=y
 CONFIG_ISW_ENTRY_ADDR=0x403018e0
@@ -38,7 +38,6 @@ CONFIG_DFU_RAM=y
 CONFIG_DFU_SF=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
diff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
index 5dc9f4fdce..658ab92487 100644
--- a/configs/am57xx_evm_defconfig
+++ b/configs/am57xx_evm_defconfig
@@ -1,14 +1,14 @@
 CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
+CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_OMAP54XX=y
-CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_TARGET_AM57XX_EVM=y
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_ARMV7_LPAE=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_ARMV7_LPAE=y
 CONFIG_DEFAULT_DEVICE_TREE="am572x-idk"
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_OF_BOARD_SETUP=y
@@ -46,7 +46,6 @@ CONFIG_DFU_RAM=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/am57xx_hs_evm_defconfig b/configs/am57xx_hs_evm_defconfig
index 517f7505db..b3833303aa 100644
--- a/configs/am57xx_hs_evm_defconfig
+++ b/configs/am57xx_hs_evm_defconfig
@@ -1,8 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
+CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_OMAP54XX=y
-CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_TI_SECURE_DEVICE=y
 CONFIG_TARGET_AM57XX_EVM=y
 CONFIG_TI_SECURE_EMIF_REGION_START=0xbdb00000
@@ -11,8 +11,8 @@ CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE=0x01c00000
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_ARMV7_LPAE=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_ARMV7_LPAE=y
 CONFIG_DEFAULT_DEVICE_TREE="am57xx-beagle-x15"
 CONFIG_FIT_IMAGE_POST_PROCESS=y
 CONFIG_SPL_LOAD_FIT=y
@@ -50,7 +50,6 @@ CONFIG_DFU_RAM=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/at91sam9263ek_norflash_boot_defconfig b/configs/at91sam9263ek_norflash_boot_defconfig
index 21480c5d07..7f3d937e45 100644
--- a/configs/at91sam9263ek_norflash_boot_defconfig
+++ b/configs/at91sam9263ek_norflash_boot_defconfig
@@ -31,6 +31,7 @@ CONFIG_DM_GPIO=y
 CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
+CONFIG_MTD_NOR_FLASH=y
 CONFIG_DM_ETH=y
 CONFIG_MACB=y
 CONFIG_PINCTRL=y
@@ -43,7 +44,6 @@ CONFIG_DEBUG_UART_CLOCK=100000000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_ANNOUNCE=y
 CONFIG_ATMEL_USART=y
-CONFIG_MTD_NOR_FLASH=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
diff --git a/configs/at91sam9263ek_norflash_defconfig b/configs/at91sam9263ek_norflash_defconfig
index 824c366c44..63dffd8e3a 100644
--- a/configs/at91sam9263ek_norflash_defconfig
+++ b/configs/at91sam9263ek_norflash_defconfig
@@ -31,6 +31,7 @@ CONFIG_DM_GPIO=y
 CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
+CONFIG_MTD_NOR_FLASH=y
 CONFIG_DM_ETH=y
 CONFIG_MACB=y
 CONFIG_PINCTRL=y
@@ -43,7 +44,6 @@ CONFIG_DEBUG_UART_CLOCK=100000000
 CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_DEBUG_UART_ANNOUNCE=y
 CONFIG_ATMEL_USART=y
-CONFIG_MTD_NOR_FLASH=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
diff --git a/configs/bcm958622hr_defconfig b/configs/bcm958622hr_defconfig
index 62e50b63f4..ffda22ed49 100644
--- a/configs/bcm958622hr_defconfig
+++ b/configs/bcm958622hr_defconfig
@@ -9,11 +9,11 @@ CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_ASKENV=y
+CONFIG_CRC32_VERIFY=y
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
-CONFIG_CRC32_VERIFY=y
 CONFIG_CMD_HASH=y
 CONFIG_HASH_VERIFY=y
 CONFIG_CMD_FAT=y
diff --git a/configs/birdland_bav335a_defconfig b/configs/birdland_bav335a_defconfig
index d866b6014f..073a58d94e 100644
--- a/configs/birdland_bav335a_defconfig
+++ b/configs/birdland_bav335a_defconfig
@@ -10,7 +10,6 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_BAV_VERSION=1
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -21,6 +20,7 @@ CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_MUSB_NEW_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/birdland_bav335b_defconfig b/configs/birdland_bav335b_defconfig
index ef73fbfde1..9679611f57 100644
--- a/configs/birdland_bav335b_defconfig
+++ b/configs/birdland_bav335b_defconfig
@@ -10,7 +10,6 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_BAV_VERSION=2
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -21,6 +20,7 @@ CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_MUSB_NEW_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/blanche_defconfig b/configs/blanche_defconfig
index a963802b56..bf7700cbe1 100644
--- a/configs/blanche_defconfig
+++ b/configs/blanche_defconfig
@@ -15,7 +15,6 @@ CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
-CONFIG_MMC=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
diff --git a/configs/brppt1_mmc_defconfig b/configs/brppt1_mmc_defconfig
index 3566223190..382a8cfc66 100644
--- a/configs/brppt1_mmc_defconfig
+++ b/configs/brppt1_mmc_defconfig
@@ -7,7 +7,6 @@ CONFIG_TARGET_BRPPT1=y
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,EMMC_BOOT"
 CONFIG_BOOTDELAY=-2
@@ -23,6 +22,7 @@ CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x300
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/brppt1_nand_defconfig b/configs/brppt1_nand_defconfig
index f07a46b78f..199ec37311 100644
--- a/configs/brppt1_nand_defconfig
+++ b/configs/brppt1_nand_defconfig
@@ -7,7 +7,6 @@ CONFIG_TARGET_BRPPT1=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND"
 CONFIG_BOOTDELAY=-2
@@ -23,6 +22,7 @@ CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x300
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/brppt1_spi_defconfig b/configs/brppt1_spi_defconfig
index 333e204310..05da94f6c6 100644
--- a/configs/brppt1_spi_defconfig
+++ b/configs/brppt1_spi_defconfig
@@ -9,7 +9,6 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,SPI_BOOT,EMMC_BOOT"
 CONFIG_SPI_BOOT=y
@@ -26,6 +25,7 @@ CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x300
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/brxre1_defconfig b/configs/brxre1_defconfig
index f558886067..65dd17238f 100644
--- a/configs/brxre1_defconfig
+++ b/configs/brxre1_defconfig
@@ -5,7 +5,6 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
 CONFIG_BOOTDELAY=-2
 # CONFIG_CONSOLE_MUX is not set
@@ -20,6 +19,7 @@ CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x300
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_BOOTD is not set
diff --git a/configs/chiliboard_defconfig b/configs/chiliboard_defconfig
index 579df941d4..82b527641d 100644
--- a/configs/chiliboard_defconfig
+++ b/configs/chiliboard_defconfig
@@ -9,14 +9,14 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SPL=y
 CONFIG_SPL_STACK_R=y
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/chromebook_minnie_defconfig b/configs/chromebook_minnie_defconfig
index ef333c0011..09f7ec3d2f 100644
--- a/configs/chromebook_minnie_defconfig
+++ b/configs/chromebook_minnie_defconfig
@@ -72,8 +72,8 @@ CONFIG_SYSRESET=y
 CONFIG_DM_VIDEO=y
 CONFIG_DISPLAY=y
 CONFIG_VIDEO_ROCKCHIP=y
-CONFIG_DISPLAY_ROCKCHIP_HDMI=y
 CONFIG_DISPLAY_ROCKCHIP_EDP=y
+CONFIG_DISPLAY_ROCKCHIP_HDMI=y
 CONFIG_CONSOLE_SCROLL_LINES=10
 CONFIG_USE_TINY_PRINTF=y
 CONFIG_CMD_DHRYSTONE=y
diff --git a/configs/clearfog_defconfig b/configs/clearfog_defconfig
index 097506872d..dfe574f92c 100644
--- a/configs/clearfog_defconfig
+++ b/configs/clearfog_defconfig
@@ -26,8 +26,6 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_TFTPPUT=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
-CONFIG_EFI_PARTITION=y
-# CONFIG_PARTITION_UUIDS is not set
 # CONFIG_SPL_PARTITION_UUIDS is not set
 CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_MMC_SDHCI=y
diff --git a/configs/cm_fx6_defconfig b/configs/cm_fx6_defconfig
index fb2f9fa5d3..dc587a6d59 100644
--- a/configs/cm_fx6_defconfig
+++ b/configs/cm_fx6_defconfig
@@ -9,8 +9,8 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-# CONFIG_CMD_BMODE is not set
 CONFIG_VIDEO=y
+# CONFIG_CMD_BMODE is not set
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL,SPL"
 CONFIG_BOOTDELAY=3
diff --git a/configs/cm_t335_defconfig b/configs/cm_t335_defconfig
index 876e3320b7..be0536a272 100644
--- a/configs/cm_t335_defconfig
+++ b/configs/cm_t335_defconfig
@@ -11,13 +11,13 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_MTD_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="CM-T335 # "
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/cm_t43_defconfig b/configs/cm_t43_defconfig
index d813cc54fb..1099f59343 100644
--- a/configs/cm_t43_defconfig
+++ b/configs/cm_t43_defconfig
@@ -10,7 +10,6 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
@@ -21,6 +20,7 @@ CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x480
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_MTD_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="CM-T43 # "
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/colibri_imx7_defconfig b/configs/colibri_imx7_defconfig
index d5838acbcc..2ba6aea312 100644
--- a/configs/colibri_imx7_defconfig
+++ b/configs/colibri_imx7_defconfig
@@ -2,9 +2,9 @@ CONFIG_ARM=y
 CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_MX7=y
 CONFIG_TARGET_COLIBRI_IMX7=y
+CONFIG_VIDEO=y
 CONFIG_IMX_RDC=y
 CONFIG_IMX_BOOTAUX=y
-CONFIG_VIDEO=y
 CONFIG_DEFAULT_DEVICE_TREE="imx7-colibri"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/colibri_imx7/imximage.cfg,MX7D"
 CONFIG_BOOTDELAY=1
diff --git a/configs/colibri_vf_defconfig b/configs/colibri_vf_defconfig
index cc9c4eee61..3b510c3e6d 100644
--- a/configs/colibri_vf_defconfig
+++ b/configs/colibri_vf_defconfig
@@ -1,8 +1,8 @@
 CONFIG_ARM=y
 CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_VF610=y
-CONFIG_TARGET_COLIBRI_VF=y
 CONFIG_VIDEO=y
+CONFIG_TARGET_COLIBRI_VF=y
 CONFIG_DEFAULT_DEVICE_TREE="vf610-colibri"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/colibri_vf/imximage.cfg,ENV_IS_IN_NAND,IMX_NAND"
 CONFIG_BOOTDELAY=1
diff --git a/configs/comtrend_ar5387un_ram_defconfig b/configs/comtrend_ar5387un_ram_defconfig
index 5b05fd20d7..f856752663 100644
--- a/configs/comtrend_ar5387un_ram_defconfig
+++ b/configs/comtrend_ar5387un_ram_defconfig
@@ -1,54 +1,44 @@
+CONFIG_MIPS=y
+CONFIG_SYS_TEXT_BASE=0x80010000
 CONFIG_ARCH_BMIPS=y
-CONFIG_BAUDRATE=115200
-CONFIG_BCM6328_POWER_DOMAIN=y
-CONFIG_BCM6345_CLK=y
-CONFIG_BCM6345_SERIAL=y
-CONFIG_BMIPS_BOOT_RAM=y
-CONFIG_BOARD_COMTREND_AR5387UN=y
-# CONFIG_CMD_BOOTD is not set
-CONFIG_CMD_BOOTM=y
+CONFIG_SOC_BMIPS_BCM6328=y
+# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
+# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
+CONFIG_MIPS_BOOT_FDT=y
+CONFIG_DEFAULT_DEVICE_TREE="comtrend,ar-5387un"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_DISPLAY_CPUINFO=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="AR-5387un # "
 CONFIG_CMD_CPU=y
-# CONFIG_CMD_CRC32 is not set
-# CONFIG_CMD_EDITENV is not set
+CONFIG_CMD_LICENSE=y
+# CONFIG_CMD_BOOTD is not set
 # CONFIG_CMD_ELF is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_EXPORTENV is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_GPIO is not set
 # CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EXPORTENV is not set
 # CONFIG_CMD_IMPORTENV is not set
-CONFIG_CMD_LED=y
-CONFIG_CMD_LICENSE=y
-CONFIG_CMD_LOADB=y
-# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_ENV_EXISTS is not set
+# CONFIG_CMD_CRC32 is not set
 CONFIG_CMD_MEMINFO=y
-# CONFIG_CMD_MISC is not set
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-# CONFIG_CMD_SAVEENV is not set
-# CONFIG_CMD_XIMG is not set
-CONFIG_DEFAULT_DEVICE_TREE="comtrend,ar-5387un"
-CONFIG_DISPLAY_CPUINFO=y
+# CONFIG_CMD_MISC is not set
 # CONFIG_DM_DEVICE_REMOVE is not set
 CONFIG_DM_GPIO=y
-CONFIG_DM_RESET=y
-CONFIG_DM_SERIAL=y
-CONFIG_HUSH_PARSER=y
 CONFIG_LED=y
 CONFIG_LED_BCM6328=y
 CONFIG_LED_BLINK=y
-CONFIG_MIPS=y
-# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
-# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
-CONFIG_MIPS_BOOT_FDT=y
-CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_POWER_DOMAIN=y
-CONFIG_RESET=y
+CONFIG_BCM6328_POWER_DOMAIN=y
+CONFIG_DM_RESET=y
 CONFIG_RESET_BCM6345=y
-CONFIG_SOC_BMIPS_BCM6328=y
 # CONFIG_SPL_SERIAL_PRESENT is not set
-# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_SYS_NO_FLASH=y
-CONFIG_SYS_PROMPT="AR-5387un # "
-CONFIG_SYS_TEXT_BASE=0x80010000
+CONFIG_DM_SERIAL=y
+CONFIG_BCM6345_SERIAL=y
diff --git a/configs/comtrend_ct5361_ram_defconfig b/configs/comtrend_ct5361_ram_defconfig
index 9ec0c4158d..27fcc8ea3c 100644
--- a/configs/comtrend_ct5361_ram_defconfig
+++ b/configs/comtrend_ct5361_ram_defconfig
@@ -1,57 +1,45 @@
+CONFIG_MIPS=y
+CONFIG_SYS_TEXT_BASE=0x80010000
 CONFIG_ARCH_BMIPS=y
-CONFIG_BAUDRATE=115200
-CONFIG_BCM6345_CLK=y
-CONFIG_BCM6345_GPIO=y
-CONFIG_BCM6345_SERIAL=y
-CONFIG_BMIPS_BOOT_RAM=y
-CONFIG_BOARD_COMTREND_CT5361=y
-CONFIG_CFI_FLASH=y
-# CONFIG_CMD_BOOTD is not set
-CONFIG_CMD_BOOTM=y
+CONFIG_SOC_BMIPS_BCM6348=y
+# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
+# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
+CONFIG_MIPS_BOOT_FDT=y
+CONFIG_DEFAULT_DEVICE_TREE="comtrend,ct-5361"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_DISPLAY_CPUINFO=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="CT-5361 # "
 CONFIG_CMD_CPU=y
-# CONFIG_CMD_CRC32 is not set
-# CONFIG_CMD_EDITENV is not set
+CONFIG_CMD_LICENSE=y
+# CONFIG_CMD_BOOTD is not set
 # CONFIG_CMD_ELF is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_EXPORTENV is not set
-CONFIG_CMD_FLASH=y
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_GPIO is not set
 # CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EXPORTENV is not set
 # CONFIG_CMD_IMPORTENV is not set
-CONFIG_CMD_LED=y
-CONFIG_CMD_LICENSE=y
-CONFIG_CMD_LOADB=y
-# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_ENV_EXISTS is not set
+# CONFIG_CMD_CRC32 is not set
 CONFIG_CMD_MEMINFO=y
-# CONFIG_CMD_MISC is not set
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-# CONFIG_CMD_SAVEENV is not set
-# CONFIG_CMD_XIMG is not set
-CONFIG_DEFAULT_DEVICE_TREE="comtrend,ct-5361"
-CONFIG_DISPLAY_CPUINFO=y
+# CONFIG_CMD_MISC is not set
 # CONFIG_DM_DEVICE_REMOVE is not set
 CONFIG_DM_GPIO=y
-CONFIG_DM_RESET=y
-CONFIG_DM_SERIAL=y
-CONFIG_HUSH_PARSER=y
+CONFIG_BCM6345_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_GPIO=y
-CONFIG_MIPS=y
-# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
-# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
-CONFIG_MIPS_BOOT_FDT=y
 CONFIG_MTD=y
-CONFIG_MTD_DEVICE=y
 CONFIG_MTD_NOR_FLASH=y
-CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_RESET=y
+CONFIG_CFI_FLASH=y
+CONFIG_DM_RESET=y
 CONFIG_RESET_BCM6345=y
-CONFIG_SOC_BMIPS_BCM6348=y
 # CONFIG_SPL_SERIAL_PRESENT is not set
-# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_SYS_PROMPT="CT-5361 # "
-CONFIG_SYS_TEXT_BASE=0x80010000
-CONFIG_WDT=y
+CONFIG_DM_SERIAL=y
+CONFIG_BCM6345_SERIAL=y
 CONFIG_WDT_BCM6345=y
diff --git a/configs/comtrend_vr3032u_ram_defconfig b/configs/comtrend_vr3032u_ram_defconfig
index c056d73f18..97f1c6259e 100644
--- a/configs/comtrend_vr3032u_ram_defconfig
+++ b/configs/comtrend_vr3032u_ram_defconfig
@@ -1,54 +1,44 @@
+CONFIG_MIPS=y
+CONFIG_SYS_TEXT_BASE=0x80010000
 CONFIG_ARCH_BMIPS=y
-CONFIG_BAUDRATE=115200
-CONFIG_BCM6328_POWER_DOMAIN=y
-CONFIG_BCM6345_CLK=y
-CONFIG_BCM6345_SERIAL=y
-CONFIG_BMIPS_BOOT_RAM=y
-CONFIG_BOARD_COMTREND_VR3032U=y
-# CONFIG_CMD_BOOTD is not set
-CONFIG_CMD_BOOTM=y
+CONFIG_SOC_BMIPS_BCM63268=y
+# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
+# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
+CONFIG_MIPS_BOOT_FDT=y
+CONFIG_DEFAULT_DEVICE_TREE="comtrend,vr-3032u"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_DISPLAY_CPUINFO=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="VR-3032u # "
 CONFIG_CMD_CPU=y
-# CONFIG_CMD_CRC32 is not set
-# CONFIG_CMD_EDITENV is not set
+CONFIG_CMD_LICENSE=y
+# CONFIG_CMD_BOOTD is not set
 # CONFIG_CMD_ELF is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_EXPORTENV is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_GPIO is not set
 # CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EXPORTENV is not set
 # CONFIG_CMD_IMPORTENV is not set
-CONFIG_CMD_LED=y
-CONFIG_CMD_LICENSE=y
-CONFIG_CMD_LOADB=y
-# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_ENV_EXISTS is not set
+# CONFIG_CMD_CRC32 is not set
 CONFIG_CMD_MEMINFO=y
-# CONFIG_CMD_MISC is not set
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-# CONFIG_CMD_SAVEENV is not set
-# CONFIG_CMD_XIMG is not set
-CONFIG_DEFAULT_DEVICE_TREE="comtrend,vr-3032u"
-CONFIG_DISPLAY_CPUINFO=y
+# CONFIG_CMD_MISC is not set
 # CONFIG_DM_DEVICE_REMOVE is not set
 CONFIG_DM_GPIO=y
-CONFIG_DM_RESET=y
-CONFIG_DM_SERIAL=y
-CONFIG_HUSH_PARSER=y
 CONFIG_LED=y
 CONFIG_LED_BCM6328=y
 CONFIG_LED_BLINK=y
-CONFIG_MIPS=y
-# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
-# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
-CONFIG_MIPS_BOOT_FDT=y
-CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_POWER_DOMAIN=y
-CONFIG_RESET=y
+CONFIG_BCM6328_POWER_DOMAIN=y
+CONFIG_DM_RESET=y
 CONFIG_RESET_BCM6345=y
-CONFIG_SOC_BMIPS_BCM63268=y
 # CONFIG_SPL_SERIAL_PRESENT is not set
-# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_SYS_NO_FLASH=y
-CONFIG_SYS_PROMPT="VR-3032u # "
-CONFIG_SYS_TEXT_BASE=0x80010000
+CONFIG_DM_SERIAL=y
+CONFIG_BCM6345_SERIAL=y
diff --git a/configs/dra7xx_evm_defconfig b/configs/dra7xx_evm_defconfig
index be04402572..6dd1baf6e9 100644
--- a/configs/dra7xx_evm_defconfig
+++ b/configs/dra7xx_evm_defconfig
@@ -1,14 +1,14 @@
 CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
+CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_OMAP54XX=y
-CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_TARGET_DRA7XX_EVM=y
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_ARMV7_LPAE=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_ARMV7_LPAE=y
 CONFIG_DEFAULT_DEVICE_TREE="dra7-evm"
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_OF_BOARD_SETUP=y
@@ -43,10 +43,9 @@ CONFIG_REGMAP=y
 CONFIG_SPL_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_SPL_SYSCON=y
-CONFIG_BLK=y
+CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_DM_SCSI=y
 CONFIG_DWC_AHCI=y
-CONFIG_SPL_OF_TRANSLATE=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_DFU_SF=y
@@ -54,13 +53,13 @@ CONFIG_DM_GPIO=y
 CONFIG_PCF8575_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_DM_ETH=y
+CONFIG_SPL_PHY=y
 CONFIG_DM_PMIC=y
 CONFIG_PMIC_PALMAS=y
 CONFIG_PMIC_LP873X=y
@@ -90,6 +89,3 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
-CONFIG_SPL_PHY=y
-CONFIG_PIPE3_PHY=y
-CONFIG_SPL_PIPE3_PHY=y
diff --git a/configs/dra7xx_hs_evm_defconfig b/configs/dra7xx_hs_evm_defconfig
index 84dd26beee..3008a1fd2c 100644
--- a/configs/dra7xx_hs_evm_defconfig
+++ b/configs/dra7xx_hs_evm_defconfig
@@ -1,8 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
+CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_OMAP54XX=y
-CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_TI_SECURE_DEVICE=y
 CONFIG_TARGET_DRA7XX_EVM=y
 CONFIG_TI_SECURE_EMIF_REGION_START=0xbdb00000
@@ -11,8 +11,8 @@ CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE=0x01c00000
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_ARMV7_LPAE=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_ARMV7_LPAE=y
 CONFIG_DEFAULT_DEVICE_TREE="dra7-evm"
 CONFIG_FIT_IMAGE_POST_PROCESS=y
 CONFIG_SPL_LOAD_FIT=y
@@ -56,13 +56,13 @@ CONFIG_DM_GPIO=y
 CONFIG_PCF8575_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_DM_ETH=y
+CONFIG_SPL_PHY=y
 CONFIG_DM_PMIC=y
 CONFIG_PMIC_PALMAS=y
 CONFIG_PMIC_LP873X=y
@@ -92,6 +92,3 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
-CONFIG_SPL_PHY=y
-CONFIG_PIPE3_PHY=y
-CONFIG_SPL_PIPE3_PHY=y
diff --git a/configs/evb-ast2500_defconfig b/configs/evb-ast2500_defconfig
index 08b5f85a34..f71d0c10c3 100644
--- a/configs/evb-ast2500_defconfig
+++ b/configs/evb-ast2500_defconfig
@@ -3,21 +3,21 @@ CONFIG_ARCH_ASPEED=y
 CONFIG_ASPEED_AST2500=y
 CONFIG_TARGET_EVB_AST2500=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
-CONFIG_PRE_CONSOLE_BUFFER=y
 CONFIG_DEFAULT_DEVICE_TREE="ast2500-evb"
+CONFIG_PRE_CONSOLE_BUFFER=y
 CONFIG_PRE_CON_BUF_ADDR=0x1e720000
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_CMD_IMLS is not set
+CONFIG_CMD_I2C=y
 CONFIG_REGMAP=y
 CONFIG_CLK=y
+CONFIG_DM_I2C=y
+CONFIG_SYS_I2C_ASPEED=y
+CONFIG_PINCTRL=y
 CONFIG_RAM=y
+CONFIG_DM_RESET=y
 CONFIG_DM_SERIAL=y
 CONFIG_SYS_NS16550=y
 CONFIG_SYSRESET=y
 CONFIG_TIMER=y
 CONFIG_WDT=y
-CONFIG_DM_RESET=y
-CONFIG_PINCTRL=y
-CONFIG_DM_I2C=y
-CONFIG_SYS_I2C_ASPEED=y
-CONFIG_CMD_I2C=y
diff --git a/configs/evb-rk3399_defconfig b/configs/evb-rk3399_defconfig
index c189e750ff..0008e7b886 100644
--- a/configs/evb-rk3399_defconfig
+++ b/configs/evb-rk3399_defconfig
@@ -23,6 +23,7 @@ CONFIG_CMD_TIME=y
 CONFIG_SPL_OF_CONTROL=y
 CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
 CONFIG_SPL_OF_PLATDATA=y
+CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_REGMAP=y
 CONFIG_SPL_REGMAP=y
 CONFIG_SYSCON=y
@@ -34,12 +35,8 @@ CONFIG_SYS_I2C_ROCKCHIP=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_ROCKCHIP=y
-CONFIG_DM_PMIC=y
-CONFIG_PMIC_RK808=y
-CONFIG_REGULATOR_RK808=y
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
-CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_GMAC_ROCKCHIP=y
 CONFIG_PINCTRL=y
 CONFIG_SPL_PINCTRL=y
diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig
index f30f131f34..bb5c859e62 100644
--- a/configs/firefly-rk3399_defconfig
+++ b/configs/firefly-rk3399_defconfig
@@ -39,7 +39,6 @@ CONFIG_ETH_DESIGNWARE=y
 CONFIG_GMAC_ROCKCHIP=y
 CONFIG_PINCTRL=y
 CONFIG_SPL_PINCTRL=y
-CONFIG_ROCKCHIP_RK3399_PINCTRL=y
 CONFIG_DM_PMIC=y
 CONFIG_PMIC_RK8XX=y
 CONFIG_REGULATOR_PWM=y
diff --git a/configs/gwventana_emmc_defconfig b/configs/gwventana_emmc_defconfig
index 0d0d1421c8..a476dc2af2 100644
--- a/configs/gwventana_emmc_defconfig
+++ b/configs/gwventana_emmc_defconfig
@@ -9,7 +9,6 @@ CONFIG_CMD_GSC=y
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_VIDEO=y
 CONFIG_SPL_STACK_R_ADDR=0x18000000
 CONFIG_CMD_HDMIDETECT=y
@@ -27,6 +26,7 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_DMA_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="Ventana > "
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/gwventana_gw5904_defconfig b/configs/gwventana_gw5904_defconfig
index 8f6618901d..bd38e6d5e1 100644
--- a/configs/gwventana_gw5904_defconfig
+++ b/configs/gwventana_gw5904_defconfig
@@ -9,7 +9,6 @@ CONFIG_CMD_GSC=y
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_VIDEO=y
 CONFIG_SPL_STACK_R_ADDR=0x18000000
 CONFIG_CMD_HDMIDETECT=y
@@ -27,6 +26,7 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_DMA_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="Ventana > "
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/gwventana_nand_defconfig b/configs/gwventana_nand_defconfig
index 5545171bb3..296f015a50 100644
--- a/configs/gwventana_nand_defconfig
+++ b/configs/gwventana_nand_defconfig
@@ -10,7 +10,6 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_VIDEO=y
 CONFIG_SPL_STACK_R_ADDR=0x18000000
 CONFIG_CMD_HDMIDETECT=y
@@ -28,6 +27,7 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_DMA_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="Ventana > "
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/huawei_hg556a_ram_defconfig b/configs/huawei_hg556a_ram_defconfig
index c2e64723c3..a0a70b294f 100644
--- a/configs/huawei_hg556a_ram_defconfig
+++ b/configs/huawei_hg556a_ram_defconfig
@@ -1,55 +1,44 @@
+CONFIG_MIPS=y
+CONFIG_SYS_TEXT_BASE=0x80010000
 CONFIG_ARCH_BMIPS=y
-CONFIG_BAUDRATE=115200
-CONFIG_BCM6345_CLK=y
-CONFIG_BCM6345_GPIO=y
-CONFIG_BCM6345_SERIAL=y
-CONFIG_BMIPS_BOOT_RAM=y
-CONFIG_BOARD_HUAWEI_HG556A=y
-CONFIG_CFI_FLASH=y
-# CONFIG_CMD_BOOTD is not set
-CONFIG_CMD_BOOTM=y
+CONFIG_SOC_BMIPS_BCM6358=y
+# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
+# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
+CONFIG_MIPS_BOOT_FDT=y
+CONFIG_DEFAULT_DEVICE_TREE="huawei,hg556a"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_DISPLAY_CPUINFO=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="HG556a # "
 CONFIG_CMD_CPU=y
-# CONFIG_CMD_CRC32 is not set
-# CONFIG_CMD_EDITENV is not set
+CONFIG_CMD_LICENSE=y
+# CONFIG_CMD_BOOTD is not set
 # CONFIG_CMD_ELF is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_EXPORTENV is not set
-CONFIG_CMD_FLASH=y
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_GPIO is not set
 # CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EXPORTENV is not set
 # CONFIG_CMD_IMPORTENV is not set
-CONFIG_CMD_LED=y
-CONFIG_CMD_LICENSE=y
-CONFIG_CMD_LOADB=y
-# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_ENV_EXISTS is not set
+# CONFIG_CMD_CRC32 is not set
 CONFIG_CMD_MEMINFO=y
-# CONFIG_CMD_MISC is not set
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-# CONFIG_CMD_SAVEENV is not set
-# CONFIG_CMD_XIMG is not set
-CONFIG_DEFAULT_DEVICE_TREE="huawei,hg556a"
-CONFIG_DISPLAY_CPUINFO=y
+# CONFIG_CMD_MISC is not set
 # CONFIG_DM_DEVICE_REMOVE is not set
 CONFIG_DM_GPIO=y
-CONFIG_DM_RESET=y
-CONFIG_DM_SERIAL=y
-CONFIG_HUSH_PARSER=y
+CONFIG_BCM6345_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_GPIO=y
-CONFIG_MIPS=y
-# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
-# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
-CONFIG_MIPS_BOOT_FDT=y
 CONFIG_MTD=y
-CONFIG_MTD_DEVICE=y
 CONFIG_MTD_NOR_FLASH=y
-CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_RESET=y
+CONFIG_CFI_FLASH=y
+CONFIG_DM_RESET=y
 CONFIG_RESET_BCM6345=y
-CONFIG_SOC_BMIPS_BCM6358=y
 # CONFIG_SPL_SERIAL_PRESENT is not set
-# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_SYS_PROMPT="HG556a # "
-CONFIG_SYS_TEXT_BASE=0x80010000
+CONFIG_DM_SERIAL=y
+CONFIG_BCM6345_SERIAL=y
diff --git a/configs/imx6qdl_icore_mmc_defconfig b/configs/imx6qdl_icore_mmc_defconfig
index 851dba2c26..b7785babcb 100644
--- a/configs/imx6qdl_icore_mmc_defconfig
+++ b/configs/imx6qdl_icore_mmc_defconfig
@@ -7,10 +7,9 @@ CONFIG_TARGET_MX6Q_ICORE=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-# CONFIG_CMD_BMODE is not set
 CONFIG_VIDEO=y
+# CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx6q-icore"
-CONFIG_OF_LIST="imx6q-icore imx6dl-icore"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
@@ -34,6 +33,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_OF_LIST="imx6q-icore imx6dl-icore"
 # CONFIG_BLK is not set
 CONFIG_SYS_I2C_MXC=y
 # CONFIG_DM_MMC_OPS is not set
diff --git a/configs/imx6qdl_icore_rqs_mmc_defconfig b/configs/imx6qdl_icore_rqs_mmc_defconfig
index b6a43ae77c..e746b489ab 100644
--- a/configs/imx6qdl_icore_rqs_mmc_defconfig
+++ b/configs/imx6qdl_icore_rqs_mmc_defconfig
@@ -9,7 +9,6 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx6q-icore-rqs"
-CONFIG_OF_LIST="imx6q-icore-rqs imx6dl-icore-rqs"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
@@ -33,6 +32,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_OF_LIST="imx6q-icore-rqs imx6dl-icore-rqs"
 # CONFIG_BLK is not set
 CONFIG_SYS_I2C_MXC=y
 # CONFIG_DM_MMC_OPS is not set
diff --git a/configs/k2e_evm_defconfig b/configs/k2e_evm_defconfig
index 83e21380b8..f09eb84ebc 100644
--- a/configs/k2e_evm_defconfig
+++ b/configs/k2e_evm_defconfig
@@ -1,14 +1,13 @@
 CONFIG_ARM=y
 CONFIG_ARCH_KEYSTONE=y
 CONFIG_SYS_TEXT_BASE=0x0c000000
+CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_TARGET_K2E_EVM=y
-CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2e-evm"
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -16,8 +15,8 @@ CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
-CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_GPT is not set
diff --git a/configs/k2e_hs_evm_defconfig b/configs/k2e_hs_evm_defconfig
index d4ec83efc5..55eab61cc3 100644
--- a/configs/k2e_hs_evm_defconfig
+++ b/configs/k2e_hs_evm_defconfig
@@ -1,9 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_KEYSTONE=y
 CONFIG_SYS_TEXT_BASE=0x0c000060
-CONFIG_TARGET_K2E_EVM=y
 CONFIG_TI_COMMON_CMD_OPTIONS=y
-CONFIG_TI_SECURE_DEVICE=y
+CONFIG_TARGET_K2E_EVM=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2e-evm"
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
diff --git a/configs/k2g_evm_defconfig b/configs/k2g_evm_defconfig
index 674ddcc9fe..a5f1ac59f1 100644
--- a/configs/k2g_evm_defconfig
+++ b/configs/k2g_evm_defconfig
@@ -1,14 +1,13 @@
 CONFIG_ARM=y
 CONFIG_ARCH_KEYSTONE=y
 CONFIG_SYS_TEXT_BASE=0x0c000000
+CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_TARGET_K2G_EVM=y
-CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2g-evm"
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -16,6 +15,7 @@ CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
@@ -30,7 +30,6 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 # CONFIG_BLK is not set
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/k2g_hs_evm_defconfig b/configs/k2g_hs_evm_defconfig
index 2e06c8c46d..51c701ed90 100644
--- a/configs/k2g_hs_evm_defconfig
+++ b/configs/k2g_hs_evm_defconfig
@@ -1,12 +1,9 @@
 CONFIG_ARM=y
 CONFIG_ARCH_KEYSTONE=y
 CONFIG_SYS_TEXT_BASE=0x0c000060
-CONFIG_TARGET_K2G_EVM=y
 CONFIG_TI_COMMON_CMD_OPTIONS=y
-CONFIG_TI_SECURE_DEVICE=y
+CONFIG_TARGET_K2G_EVM=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2g-evm"
-CONFIG_FIT=y
-CONFIG_FIT_IMAGE_POST_PROCESS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
@@ -24,7 +21,6 @@ CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 # CONFIG_BLK is not set
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/k2hk_evm_defconfig b/configs/k2hk_evm_defconfig
index 7dc5cf51cf..0afdb6e2cb 100644
--- a/configs/k2hk_evm_defconfig
+++ b/configs/k2hk_evm_defconfig
@@ -1,14 +1,13 @@
 CONFIG_ARM=y
 CONFIG_ARCH_KEYSTONE=y
 CONFIG_SYS_TEXT_BASE=0x0c000000
+CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_TARGET_K2HK_EVM=y
-CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2hk-evm"
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -16,6 +15,7 @@ CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
diff --git a/configs/k2hk_hs_evm_defconfig b/configs/k2hk_hs_evm_defconfig
index 67807e4ba8..a66a256346 100644
--- a/configs/k2hk_hs_evm_defconfig
+++ b/configs/k2hk_hs_evm_defconfig
@@ -1,9 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_KEYSTONE=y
 CONFIG_SYS_TEXT_BASE=0x0c000060
-CONFIG_TARGET_K2HK_EVM=y
 CONFIG_TI_COMMON_CMD_OPTIONS=y
-CONFIG_TI_SECURE_DEVICE=y
+CONFIG_TARGET_K2HK_EVM=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2hk-evm"
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
diff --git a/configs/k2l_evm_defconfig b/configs/k2l_evm_defconfig
index 6be4941f66..fd8c173185 100644
--- a/configs/k2l_evm_defconfig
+++ b/configs/k2l_evm_defconfig
@@ -1,14 +1,13 @@
 CONFIG_ARM=y
 CONFIG_ARCH_KEYSTONE=y
 CONFIG_SYS_TEXT_BASE=0x0c000000
+CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_TARGET_K2L_EVM=y
-CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2l-evm"
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -16,6 +15,7 @@ CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
diff --git a/configs/ls2081ardb_defconfig b/configs/ls2081ardb_defconfig
index 0d1730fc79..d8420ba77e 100644
--- a/configs/ls2081ardb_defconfig
+++ b/configs/ls2081ardb_defconfig
@@ -9,18 +9,15 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_QSPI_BOOT=y
 CONFIG_BOOTDELAY=10
-CONFIG_CMD_GREPENV=y
 # CONFIG_CMD_IMLS is not set
+CONFIG_CMD_GREPENV=y
 CONFIG_CMD_GPT=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_I2C=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_CACHE=y
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_FAT=y
 CONFIG_OF_CONTROL=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
@@ -34,10 +31,8 @@ CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCIE_LAYERSCAPE=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_SPI=y
-CONFIG_FSL_QSPI=y
 CONFIG_FSL_DSPI=y
-CONFIG_CMD_USB=y
-# CONFIG_CMD_SETEXPR is not set
+CONFIG_FSL_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
diff --git a/configs/ls2088ardb_qspi_defconfig b/configs/ls2088ardb_qspi_defconfig
index 139ff08990..76b2f32677 100644
--- a/configs/ls2088ardb_qspi_defconfig
+++ b/configs/ls2088ardb_qspi_defconfig
@@ -9,18 +9,15 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_QSPI_BOOT=y
 CONFIG_BOOTDELAY=10
-CONFIG_CMD_GREPENV=y
 # CONFIG_CMD_IMLS is not set
+CONFIG_CMD_GREPENV=y
 CONFIG_CMD_GPT=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_I2C=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_CACHE=y
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_FAT=y
 CONFIG_OF_CONTROL=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
@@ -34,10 +31,8 @@ CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCIE_LAYERSCAPE=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_SPI=y
-CONFIG_FSL_QSPI=y
 CONFIG_FSL_DSPI=y
-CONFIG_CMD_USB=y
-# CONFIG_CMD_SETEXPR is not set
+CONFIG_FSL_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
diff --git a/configs/m53evk_defconfig b/configs/m53evk_defconfig
index a33a601236..cc4a74ca52 100644
--- a/configs/m53evk_defconfig
+++ b/configs/m53evk_defconfig
@@ -6,8 +6,8 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_TARGET_M53EVK=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
-# CONFIG_CMD_BMODE is not set
 CONFIG_VIDEO=y
+# CONFIG_CMD_BMODE is not set
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aries/m53evk/imximage.cfg"
 CONFIG_BOOTDELAY=3
diff --git a/configs/mx51evk_defconfig b/configs/mx51evk_defconfig
index 3f57c88a88..8f09c04ceb 100644
--- a/configs/mx51evk_defconfig
+++ b/configs/mx51evk_defconfig
@@ -1,8 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_MX5=y
 CONFIG_TARGET_MX51EVK=y
-# CONFIG_CMD_BMODE is not set
 CONFIG_VIDEO=y
+# CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx51evk/imximage.cfg"
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
diff --git a/configs/mx53cx9020_defconfig b/configs/mx53cx9020_defconfig
index d947d9fd5b..e0c597cbe2 100644
--- a/configs/mx53cx9020_defconfig
+++ b/configs/mx53cx9020_defconfig
@@ -1,8 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_MX5=y
 CONFIG_TARGET_MX53CX9020=y
-# CONFIG_CMD_BMODE is not set
 CONFIG_VIDEO=y
+# CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx53-cx9020"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/beckhoff/mx53cx9020/imximage.cfg"
 CONFIG_BOOTDELAY=1
diff --git a/configs/mx53loco_defconfig b/configs/mx53loco_defconfig
index b71c3ae719..572735616b 100644
--- a/configs/mx53loco_defconfig
+++ b/configs/mx53loco_defconfig
@@ -1,8 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_MX5=y
 CONFIG_TARGET_MX53LOCO=y
-# CONFIG_CMD_BMODE is not set
 CONFIG_VIDEO=y
+# CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx53loco/imximage.cfg"
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
diff --git a/configs/mx6cuboxi_defconfig b/configs/mx6cuboxi_defconfig
index b180f54075..7530de1519 100644
--- a/configs/mx6cuboxi_defconfig
+++ b/configs/mx6cuboxi_defconfig
@@ -8,9 +8,9 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_VIDEO=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_CMD_HDMIDETECT=y
-CONFIG_VIDEO=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
 # CONFIG_SYS_STDIO_DEREGISTER is not set
diff --git a/configs/mx6sxsabresd_defconfig b/configs/mx6sxsabresd_defconfig
index ff23345c1e..2522eb770b 100644
--- a/configs/mx6sxsabresd_defconfig
+++ b/configs/mx6sxsabresd_defconfig
@@ -1,8 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6SXSABRESD=y
-# CONFIG_CMD_BMODE is not set
 CONFIG_VIDEO=y
+# CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sxsabresd/imximage.cfg"
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
diff --git a/configs/mx6sxsabresd_spl_defconfig b/configs/mx6sxsabresd_spl_defconfig
index c08cadab4d..6d4fe6370f 100644
--- a/configs/mx6sxsabresd_spl_defconfig
+++ b/configs/mx6sxsabresd_spl_defconfig
@@ -8,8 +8,8 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-# CONFIG_CMD_BMODE is not set
 CONFIG_VIDEO=y
+# CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg"
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
diff --git a/configs/mx7dsabresd_defconfig b/configs/mx7dsabresd_defconfig
index 52faae43e4..dfe55ac59e 100644
--- a/configs/mx7dsabresd_defconfig
+++ b/configs/mx7dsabresd_defconfig
@@ -1,11 +1,11 @@
 CONFIG_ARM=y
 CONFIG_ARCH_MX7=y
 CONFIG_TARGET_MX7DSABRESD=y
+CONFIG_VIDEO=y
 # CONFIG_ARMV7_VIRT is not set
 CONFIG_IMX_RDC=y
 CONFIG_IMX_BOOTAUX=y
 # CONFIG_CMD_BMODE is not set
-CONFIG_VIDEO=y
 CONFIG_DEFAULT_DEVICE_TREE="imx7d-sdb"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7dsabresd/imximage.cfg"
 CONFIG_BOOTDELAY=3
diff --git a/configs/nanopi_neo_air_defconfig b/configs/nanopi_neo_air_defconfig
index 5400d37bd1..a73640e88f 100644
--- a/configs/nanopi_neo_air_defconfig
+++ b/configs/nanopi_neo_air_defconfig
@@ -4,6 +4,7 @@ CONFIG_MACH_SUN8I_H3=y
 CONFIG_DRAM_CLK=408
 CONFIG_DRAM_ZQ=3881979
 CONFIG_DRAM_ODT_EN=y
+# CONFIG_VIDEO_DE2 is not set
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-nanopi-neo-air"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_CONSOLE_MUX=y
@@ -15,4 +16,3 @@ CONFIG_SPL=y
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_USB_EHCI_HCD=y
-# CONFIG_VIDEO_DE2 is not set
diff --git a/configs/nanopi_neo_defconfig b/configs/nanopi_neo_defconfig
index 5afd5d565a..8b55497250 100644
--- a/configs/nanopi_neo_defconfig
+++ b/configs/nanopi_neo_defconfig
@@ -4,6 +4,7 @@ CONFIG_MACH_SUN8I_H3=y
 CONFIG_DRAM_CLK=408
 CONFIG_DRAM_ZQ=3881979
 CONFIG_DRAM_ODT_EN=y
+# CONFIG_VIDEO_DE2 is not set
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-nanopi-neo"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_CONSOLE_MUX=y
@@ -16,4 +17,3 @@ CONFIG_SPL=y
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_SUN8I_EMAC=y
 CONFIG_USB_EHCI_HCD=y
-# CONFIG_VIDEO_DE2 is not set
diff --git a/configs/netgear_cg3100d_ram_defconfig b/configs/netgear_cg3100d_ram_defconfig
index a6eff10b6a..e3537943e5 100644
--- a/configs/netgear_cg3100d_ram_defconfig
+++ b/configs/netgear_cg3100d_ram_defconfig
@@ -1,56 +1,44 @@
+CONFIG_MIPS=y
+CONFIG_SYS_TEXT_BASE=0x80010000
 CONFIG_ARCH_BMIPS=y
-CONFIG_BAUDRATE=115200
-CONFIG_BCM6345_CLK=y
-CONFIG_BCM6345_GPIO=y
-CONFIG_BCM6345_SERIAL=y
-CONFIG_BMIPS_BOOT_RAM=y
-CONFIG_BOARD_NETGEAR_CG3100D=y
-# CONFIG_CMD_BOOTD is not set
-CONFIG_CMD_BOOTM=y
+# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
+# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
+CONFIG_MIPS_BOOT_FDT=y
+CONFIG_DEFAULT_DEVICE_TREE="netgear,cg3100d"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_DISPLAY_CPUINFO=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="CG3100D # "
 CONFIG_CMD_CPU=y
-# CONFIG_CMD_CRC32 is not set
-# CONFIG_CMD_EDITENV is not set
+CONFIG_CMD_LICENSE=y
+# CONFIG_CMD_BOOTD is not set
 # CONFIG_CMD_ELF is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_EXPORTENV is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_GPIO is not set
 # CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EXPORTENV is not set
 # CONFIG_CMD_IMPORTENV is not set
-CONFIG_CMD_LED=y
-CONFIG_CMD_LICENSE=y
-CONFIG_CMD_LOADB=y
-# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_ENV_EXISTS is not set
+# CONFIG_CMD_CRC32 is not set
 CONFIG_CMD_MEMINFO=y
-# CONFIG_CMD_MISC is not set
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-# CONFIG_CMD_SAVEENV is not set
-# CONFIG_CMD_XIMG is not set
-CONFIG_DEFAULT_DEVICE_TREE="netgear,cg3100d"
-CONFIG_DISPLAY_CPUINFO=y
+# CONFIG_CMD_MISC is not set
 # CONFIG_DM_DEVICE_REMOVE is not set
 CONFIG_DM_GPIO=y
-CONFIG_DM_RESET=y
-CONFIG_DM_SERIAL=y
-CONFIG_HUSH_PARSER=y
+CONFIG_BCM6345_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_BCM6328=y
 CONFIG_LED_BLINK=y
 CONFIG_LED_GPIO=y
-CONFIG_MIPS=y
-# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
-# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
-CONFIG_MIPS_BOOT_FDT=y
-CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_RESET=y
+CONFIG_DM_RESET=y
 CONFIG_RESET_BCM6345=y
-CONFIG_SOC_BMIPS_BCM3380=y
 # CONFIG_SPL_SERIAL_PRESENT is not set
-# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_SYS_NO_FLASH=y
-CONFIG_SYS_PROMPT="CG3100D # "
-CONFIG_SYS_TEXT_BASE=0x80010000
-CONFIG_WDT=y
+CONFIG_DM_SERIAL=y
+CONFIG_BCM6345_SERIAL=y
 CONFIG_WDT_BCM6345=y
diff --git a/configs/novena_defconfig b/configs/novena_defconfig
index 3c7589bf78..afacea7e71 100644
--- a/configs/novena_defconfig
+++ b/configs/novena_defconfig
@@ -9,9 +9,9 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_VIDEO=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_CMD_HDMIDETECT=y
-CONFIG_VIDEO=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
diff --git a/configs/omap3_logic_defconfig b/configs/omap3_logic_defconfig
index aa7035821e..a8315857e3 100644
--- a/configs/omap3_logic_defconfig
+++ b/configs/omap3_logic_defconfig
@@ -29,7 +29,6 @@ CONFIG_OF_CONTROL=y
 # CONFIG_BLK is not set
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
-# CONFIG_DM_MMC_OPS is not set
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MMC_OMAP36XX_PINS=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/opos6uldev_defconfig b/configs/opos6uldev_defconfig
index 1a9d6cddc3..f08e1dd404 100644
--- a/configs/opos6uldev_defconfig
+++ b/configs/opos6uldev_defconfig
@@ -7,8 +7,8 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-# CONFIG_CMD_BMODE is not set
 CONFIG_VIDEO=y
+# CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx6ul-opos6uldev"
 CONFIG_BOOTDELAY=5
 # CONFIG_CONSOLE_MUX is not set
diff --git a/configs/orangepi_2_defconfig b/configs/orangepi_2_defconfig
index 201771ee8f..dffba8cad1 100644
--- a/configs/orangepi_2_defconfig
+++ b/configs/orangepi_2_defconfig
@@ -8,7 +8,6 @@ CONFIG_DRAM_ODT_EN=y
 CONFIG_USB1_VBUS_PIN="PG13"
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-orangepi-2"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
 CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/orangepi_lite_defconfig b/configs/orangepi_lite_defconfig
index 38f4583fd0..448a1619c0 100644
--- a/configs/orangepi_lite_defconfig
+++ b/configs/orangepi_lite_defconfig
@@ -6,7 +6,6 @@ CONFIG_DRAM_ZQ=3881979
 CONFIG_DRAM_ODT_EN=y
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-orangepi-lite"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
diff --git a/configs/orangepi_one_defconfig b/configs/orangepi_one_defconfig
index 56c9a871b1..97d0e06276 100644
--- a/configs/orangepi_one_defconfig
+++ b/configs/orangepi_one_defconfig
@@ -6,7 +6,6 @@ CONFIG_DRAM_ZQ=3881979
 CONFIG_DRAM_ODT_EN=y
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-orangepi-one"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
diff --git a/configs/orangepi_pc2_defconfig b/configs/orangepi_pc2_defconfig
index 8e01284f75..5a64ad3f41 100644
--- a/configs/orangepi_pc2_defconfig
+++ b/configs/orangepi_pc2_defconfig
@@ -6,7 +6,6 @@ CONFIG_DRAM_CLK=672
 CONFIG_DRAM_ZQ=3881977
 CONFIG_DEFAULT_DEVICE_TREE="sun50i-h5-orangepi-pc2"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
diff --git a/configs/orangepi_pc_defconfig b/configs/orangepi_pc_defconfig
index 9d4cb0e673..af7568fddf 100644
--- a/configs/orangepi_pc_defconfig
+++ b/configs/orangepi_pc_defconfig
@@ -6,7 +6,6 @@ CONFIG_DRAM_ZQ=3881979
 CONFIG_DRAM_ODT_EN=y
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-orangepi-pc"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
 CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/orangepi_pc_plus_defconfig b/configs/orangepi_pc_plus_defconfig
index 0addd1938d..935e96d10a 100644
--- a/configs/orangepi_pc_plus_defconfig
+++ b/configs/orangepi_pc_plus_defconfig
@@ -7,7 +7,6 @@ CONFIG_DRAM_ODT_EN=y
 CONFIG_MMC_SUNXI_SLOT_EXTRA=2
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-orangepi-pc-plus"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
 CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/orangepi_plus2e_defconfig b/configs/orangepi_plus2e_defconfig
index 52ec86a4bf..3301ca05a4 100644
--- a/configs/orangepi_plus2e_defconfig
+++ b/configs/orangepi_plus2e_defconfig
@@ -8,7 +8,6 @@ CONFIG_MACPWR="PD6"
 CONFIG_MMC_SUNXI_SLOT_EXTRA=2
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-orangepi-plus2e"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
 CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/orangepi_plus_defconfig b/configs/orangepi_plus_defconfig
index 5e028691c1..34c57509c5 100644
--- a/configs/orangepi_plus_defconfig
+++ b/configs/orangepi_plus_defconfig
@@ -10,7 +10,6 @@ CONFIG_USB1_VBUS_PIN="PG13"
 CONFIG_SATAPWR="PG11"
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-orangepi-plus"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
 CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/orangepi_zero_defconfig b/configs/orangepi_zero_defconfig
index 97ef08994a..c650ce87d9 100644
--- a/configs/orangepi_zero_defconfig
+++ b/configs/orangepi_zero_defconfig
@@ -5,6 +5,7 @@ CONFIG_MACH_SUN8I_H3=y
 CONFIG_DRAM_CLK=672
 CONFIG_DRAM_ZQ=3881979
 CONFIG_DRAM_ODT_EN=y
+# CONFIG_VIDEO_DE2 is not set
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-h2-plus-orangepi-zero"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_CONSOLE_MUX=y
@@ -15,4 +16,3 @@ CONFIG_SPL=y
 CONFIG_SPL_SPI_SUNXI=y
 CONFIG_SUN8I_EMAC=y
 CONFIG_USB_EHCI_HCD=y
-# CONFIG_VIDEO_DE2 is not set
diff --git a/configs/pcm051_rev1_defconfig b/configs/pcm051_rev1_defconfig
index 6b4e229f50..466aa511ba 100644
--- a/configs/pcm051_rev1_defconfig
+++ b/configs/pcm051_rev1_defconfig
@@ -10,7 +10,6 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="REV1"
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
@@ -23,6 +22,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_NET_SUPPORT=y
 CONFIG_SPL_NET_VCI_STRING="pcm051 U-Boot SPL"
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/pcm051_rev3_defconfig b/configs/pcm051_rev3_defconfig
index 6baca9650b..7150e79ed6 100644
--- a/configs/pcm051_rev3_defconfig
+++ b/configs/pcm051_rev3_defconfig
@@ -10,7 +10,6 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="REV3"
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
@@ -23,6 +22,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_NET_SUPPORT=y
 CONFIG_SPL_NET_VCI_STRING="pcm051 U-Boot SPL"
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/pengwyn_defconfig b/configs/pengwyn_defconfig
index 8693dea534..973f3cd53b 100644
--- a/configs/pengwyn_defconfig
+++ b/configs/pengwyn_defconfig
@@ -11,7 +11,6 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
@@ -24,6 +23,7 @@ CONFIG_SPL_MTD_SUPPORT=y
 CONFIG_SPL_NET_SUPPORT=y
 CONFIG_SPL_NET_VCI_STRING="AM335x U-Boot SPL"
 CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SPL_YMODEM_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/pepper_defconfig b/configs/pepper_defconfig
index 4b122d6d8c..11570a8126 100644
--- a/configs/pepper_defconfig
+++ b/configs/pepper_defconfig
@@ -10,12 +10,12 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_SPL_POWER_SUPPORT=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="pepper# "
 CONFIG_CMD_BOOTZ=y
diff --git a/configs/pine64_plus_defconfig b/configs/pine64_plus_defconfig
index 593e24a836..a509ca92b2 100644
--- a/configs/pine64_plus_defconfig
+++ b/configs/pine64_plus_defconfig
@@ -3,9 +3,7 @@ CONFIG_ARCH_SUNXI=y
 CONFIG_MACH_SUN50I=y
 CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y
 CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pine64-plus"
-CONFIG_OF_LIST="sun50i-a64-pine64 sun50i-a64-pine64-plus"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
@@ -13,5 +11,6 @@ CONFIG_SPL=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_OF_LIST="sun50i-a64-pine64 sun50i-a64-pine64-plus"
 CONFIG_SUN8I_EMAC=y
 CONFIG_USB_EHCI_HCD=y
diff --git a/configs/puma-rk3399_defconfig b/configs/puma-rk3399_defconfig
index 62453604c6..2fb4f040f5 100644
--- a/configs/puma-rk3399_defconfig
+++ b/configs/puma-rk3399_defconfig
@@ -10,7 +10,6 @@ CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3399-puma"
 CONFIG_FIT=y
-CONFIG_SPL_FIT=y
 CONFIG_SPL_LOAD_FIT=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
diff --git a/configs/pxm2_defconfig b/configs/pxm2_defconfig
index 67bdfd63f2..9c49ae9b43 100644
--- a/configs/pxm2_defconfig
+++ b/configs/pxm2_defconfig
@@ -13,8 +13,8 @@ CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_VIDEO=y
+CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="am335x-pxm50"
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
diff --git a/configs/r8a7795_salvator-x_defconfig b/configs/r8a7795_salvator-x_defconfig
index 1eba299242..3c340b1bc6 100644
--- a/configs/r8a7795_salvator-x_defconfig
+++ b/configs/r8a7795_salvator-x_defconfig
@@ -3,30 +3,19 @@ CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_RCAR_GEN3=y
 CONFIG_TARGET_SALVATOR_X=y
-CONFIG_DEFAULT_FDT_FILE=r8a7795-salvator-x.dtb
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
-CONFIG_CMD_FDT=y
-CONFIG_R8A7795=y
-CONFIG_SH_SDHI=y
 # CONFIG_CMD_IMLS is not set
-CONFIG_CMD_EDITENV=y
-CONFIG_CMD_SAVEENV=y
-CONFIG_CMD_NET=y
-CONFIG_CMD_NFS=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_USB=y
+CONFIG_DM_ETH=y
+CONFIG_RENESAS_RAVB=y
 CONFIG_USB=y
-CONFIG_USB_HOST=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
-CONFIG_USB_EHCI_RCAR_GEN3=y
-CONFIG_DOS_PARTITION=y
-CONFIG_MMC=y
-CONFIG_GENERIC_MMC=y
 CONFIG_OF_LIBFDT=y
-CONFIG_DM_ETH=y
-CONFIG_RENESAS_RAVB=y
diff --git a/configs/r8a7796_salvator-x_defconfig b/configs/r8a7796_salvator-x_defconfig
index 5bd762da79..bdbb6259d9 100644
--- a/configs/r8a7796_salvator-x_defconfig
+++ b/configs/r8a7796_salvator-x_defconfig
@@ -2,31 +2,21 @@ CONFIG_ARM=y
 CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_RCAR_GEN3=y
+CONFIG_R8A7796=y
 CONFIG_TARGET_SALVATOR_X=y
-CONFIG_DEFAULT_FDT_FILE=r8a7796-salvator-x.dtb
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
-CONFIG_CMD_FDT=y
-CONFIG_R8A7796=y
-CONFIG_SH_SDHI=y
 # CONFIG_CMD_IMLS is not set
-CONFIG_CMD_EDITENV=y
-CONFIG_CMD_SAVEENV=y
-CONFIG_CMD_NET=y
-CONFIG_CMD_NFS=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_USB=y
+CONFIG_DM_ETH=y
+CONFIG_RENESAS_RAVB=y
 CONFIG_USB=y
-CONFIG_USB_HOST=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
-CONFIG_USB_EHCI_RCAR_GEN3=y
-CONFIG_DOS_PARTITION=y
-CONFIG_MMC=y
-CONFIG_GENERIC_MMC=y
 CONFIG_OF_LIBFDT=y
-CONFIG_DM_ETH=y
-CONFIG_RENESAS_RAVB=y
diff --git a/configs/rut_defconfig b/configs/rut_defconfig
index f09a67e62c..f3f5e4dbf3 100644
--- a/configs/rut_defconfig
+++ b/configs/rut_defconfig
@@ -13,8 +13,8 @@ CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_VIDEO=y
+CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="am335x-rut"
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
diff --git a/configs/sagem_f at st1704_ram_defconfig b/configs/sagem_f at st1704_ram_defconfig
index 8e89c1548c..8b5d7f4d65 100644
--- a/configs/sagem_f at st1704_ram_defconfig
+++ b/configs/sagem_f at st1704_ram_defconfig
@@ -1,52 +1,42 @@
+CONFIG_MIPS=y
+CONFIG_SYS_TEXT_BASE=0x80010000
 CONFIG_ARCH_BMIPS=y
-CONFIG_BAUDRATE=115200
-CONFIG_BCM6345_CLK=y
-CONFIG_BCM6345_GPIO=y
-CONFIG_BCM6345_SERIAL=y
-CONFIG_BMIPS_BOOT_RAM=y
-CONFIG_BOARD_SAGEM_FAST1704=y
-# CONFIG_CMD_BOOTD is not set
-CONFIG_CMD_BOOTM=y
+CONFIG_SOC_BMIPS_BCM6338=y
+# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
+# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
+CONFIG_MIPS_BOOT_FDT=y
+CONFIG_DEFAULT_DEVICE_TREE="sagem,f at st1704"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_DISPLAY_CPUINFO=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="F at ST1704 # "
 CONFIG_CMD_CPU=y
-# CONFIG_CMD_CRC32 is not set
-# CONFIG_CMD_EDITENV is not set
+CONFIG_CMD_LICENSE=y
+# CONFIG_CMD_BOOTD is not set
 # CONFIG_CMD_ELF is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_EXPORTENV is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_GPIO is not set
 # CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EXPORTENV is not set
 # CONFIG_CMD_IMPORTENV is not set
-CONFIG_CMD_LED=y
-CONFIG_CMD_LICENSE=y
-CONFIG_CMD_LOADB=y
-# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_ENV_EXISTS is not set
+# CONFIG_CMD_CRC32 is not set
 CONFIG_CMD_MEMINFO=y
-# CONFIG_CMD_MISC is not set
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-# CONFIG_CMD_SAVEENV is not set
-# CONFIG_CMD_XIMG is not set
-CONFIG_DEFAULT_DEVICE_TREE="sagem,f at st1704"
-CONFIG_DISPLAY_CPUINFO=y
+# CONFIG_CMD_MISC is not set
 # CONFIG_DM_DEVICE_REMOVE is not set
 CONFIG_DM_GPIO=y
-CONFIG_DM_RESET=y
-CONFIG_DM_SERIAL=y
-CONFIG_HUSH_PARSER=y
+CONFIG_BCM6345_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_GPIO=y
-CONFIG_MIPS=y
-# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
-# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
-CONFIG_MIPS_BOOT_FDT=y
-CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_RESET=y
+CONFIG_DM_RESET=y
 CONFIG_RESET_BCM6345=y
-CONFIG_SOC_BMIPS_BCM6338=y
 # CONFIG_SPL_SERIAL_PRESENT is not set
-# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_SYS_NO_FLASH=y
-CONFIG_SYS_PROMPT="F at ST1704 # "
-CONFIG_SYS_TEXT_BASE=0x80010000
+CONFIG_DM_SERIAL=y
+CONFIG_BCM6345_SERIAL=y
diff --git a/configs/sama5d2_xplained_mmc_defconfig b/configs/sama5d2_xplained_mmc_defconfig
index b60e00ce5a..eb0ccb0612 100644
--- a/configs/sama5d2_xplained_mmc_defconfig
+++ b/configs/sama5d2_xplained_mmc_defconfig
@@ -4,12 +4,12 @@ CONFIG_TARGET_SAMA5D2_XPLAINED=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
-CONFIG_SYS_MALLOC_F_LEN=0x2000
-CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d2_xplained"
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D2,SYS_USE_MMC"
diff --git a/configs/sama5d2_xplained_spiflash_defconfig b/configs/sama5d2_xplained_spiflash_defconfig
index 70a17ed135..1573ff852c 100644
--- a/configs/sama5d2_xplained_spiflash_defconfig
+++ b/configs/sama5d2_xplained_spiflash_defconfig
@@ -6,9 +6,9 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d2_xplained"
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D2,SYS_USE_SERIALFLASH"
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index 662606cd72..b08dbd7b95 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -4,7 +4,6 @@ CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
-CONFIG_SPL_LOAD_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
 CONFIG_BOOTSTAGE_USER_COUNT=0x20
@@ -120,6 +119,8 @@ CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCI_SANDBOX=y
+CONFIG_PHY=y
+CONFIG_PHY_SANDBOX=y
 CONFIG_PINCTRL=y
 CONFIG_PINCONF=y
 CONFIG_PINCTRL_ROCKCHIP_RK3036=y
@@ -175,10 +176,10 @@ CONFIG_CONSOLE_ROTATION=y
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
 CONFIG_VIDEO_SANDBOX_SDL=y
+CONFIG_WDT=y
+CONFIG_WDT_SANDBOX=y
 CONFIG_FS_CBFS=y
 CONFIG_FS_CRAMFS=y
-CONFIG_PHY=y
-CONFIG_PHY_SANDBOX=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_TPM=y
 CONFIG_LZ4=y
@@ -187,5 +188,3 @@ CONFIG_UNIT_TEST=y
 CONFIG_UT_TIME=y
 CONFIG_UT_DM=y
 CONFIG_UT_ENV=y
-CONFIG_WDT=y
-CONFIG_WDT_SANDBOX=y
diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig
index 83efb23dbc..17c82840fb 100644
--- a/configs/sandbox_flattree_defconfig
+++ b/configs/sandbox_flattree_defconfig
@@ -4,7 +4,6 @@ CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
-CONFIG_SPL_LOAD_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
 CONFIG_BOOTSTAGE_USER_COUNT=0x20
@@ -112,6 +111,8 @@ CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCI_SANDBOX=y
+CONFIG_PHY=y
+CONFIG_PHY_SANDBOX=y
 CONFIG_PINCTRL=y
 CONFIG_PINCONF=y
 CONFIG_PINCTRL_ROCKCHIP_RK3036=y
@@ -124,7 +125,6 @@ CONFIG_PMIC_ACT8846=y
 CONFIG_DM_PMIC_PFUZE100=y
 CONFIG_DM_PMIC_MAX77686=y
 CONFIG_PMIC_PM8916=y
-CONFIG_PMIC_RK808=y
 CONFIG_PMIC_S2MPS11=y
 CONFIG_DM_PMIC_SANDBOX=y
 CONFIG_PMIC_S5M8767=y
@@ -134,10 +134,11 @@ CONFIG_REGULATOR_ACT8846=y
 CONFIG_DM_REGULATOR_PFUZE100=y
 CONFIG_DM_REGULATOR_MAX77686=y
 CONFIG_DM_REGULATOR_FIXED=y
-CONFIG_REGULATOR_RK808=y
 CONFIG_REGULATOR_S5M8767=y
 CONFIG_DM_REGULATOR_SANDBOX=y
 CONFIG_REGULATOR_TPS65090=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_SANDBOX=y
 CONFIG_RAM=y
 CONFIG_REMOTEPROC_SANDBOX=y
 CONFIG_DM_RESET=y
@@ -165,8 +166,6 @@ CONFIG_CONSOLE_ROTATION=y
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
 CONFIG_VIDEO_SANDBOX_SDL=y
-CONFIG_PHY=y
-CONFIG_PHY_SANDBOX=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_TPM=y
 CONFIG_LZ4=y
@@ -175,5 +174,3 @@ CONFIG_UNIT_TEST=y
 CONFIG_UT_TIME=y
 CONFIG_UT_DM=y
 CONFIG_UT_ENV=y
-CONFIG_DM_PWM=y
-CONFIG_PWM_SANDBOX=y
diff --git a/configs/sandbox_noblk_defconfig b/configs/sandbox_noblk_defconfig
index 519e91f623..85137187df 100644
--- a/configs/sandbox_noblk_defconfig
+++ b/configs/sandbox_noblk_defconfig
@@ -3,7 +3,6 @@ CONFIG_DEFAULT_DEVICE_TREE="sandbox"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
-CONFIG_SPL_LOAD_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
 CONFIG_BOOTSTAGE_USER_COUNT=0x20
@@ -123,6 +122,8 @@ CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCI_SANDBOX=y
+CONFIG_PHY=y
+CONFIG_PHY_SANDBOX=y
 CONFIG_PINCTRL=y
 CONFIG_PINCONF=y
 CONFIG_PINCTRL_ROCKCHIP_RK3036=y
@@ -176,8 +177,6 @@ CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
 CONFIG_VIDEO_SANDBOX_SDL=y
 CONFIG_FS_CBFS=y
 CONFIG_FS_CRAMFS=y
-CONFIG_PHY=y
-CONFIG_PHY_SANDBOX=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_TPM=y
 CONFIG_LZ4=y
diff --git a/configs/sandbox_spl_defconfig b/configs/sandbox_spl_defconfig
index 761cfb6f7b..3071a75105 100644
--- a/configs/sandbox_spl_defconfig
+++ b/configs/sandbox_spl_defconfig
@@ -129,6 +129,8 @@ CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCI_SANDBOX=y
+CONFIG_PHY=y
+CONFIG_PHY_SANDBOX=y
 CONFIG_PINCTRL=y
 CONFIG_PINCONF=y
 CONFIG_PINCTRL_SANDBOX=y
@@ -182,8 +184,6 @@ CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
 CONFIG_VIDEO_SANDBOX_SDL=y
 CONFIG_FS_CBFS=y
 CONFIG_FS_CRAMFS=y
-CONFIG_PHY=y
-CONFIG_PHY_SANDBOX=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_TPM=y
 CONFIG_LZ4=y
diff --git a/configs/sfr_nb4-ser_ram_defconfig b/configs/sfr_nb4-ser_ram_defconfig
index d7c8329731..537fee75c4 100644
--- a/configs/sfr_nb4-ser_ram_defconfig
+++ b/configs/sfr_nb4-ser_ram_defconfig
@@ -1,56 +1,46 @@
+CONFIG_MIPS=y
+CONFIG_SYS_TEXT_BASE=0x80010000
 CONFIG_ARCH_BMIPS=y
-CONFIG_BAUDRATE=115200
-CONFIG_BCM6345_CLK=y
-CONFIG_BCM6345_GPIO=y
-CONFIG_BCM6345_SERIAL=y
-CONFIG_BMIPS_BOOT_RAM=y
+CONFIG_SOC_BMIPS_BCM6358=y
 CONFIG_BOARD_SFR_NB4_SER=y
-CONFIG_CFI_FLASH=y
-# CONFIG_CMD_BOOTD is not set
-CONFIG_CMD_BOOTM=y
+# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
+# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
+CONFIG_MIPS_BOOT_FDT=y
+CONFIG_DEFAULT_DEVICE_TREE="sfr,nb4-ser"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_DISPLAY_CPUINFO=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="NB4-SER # "
 CONFIG_CMD_CPU=y
-# CONFIG_CMD_CRC32 is not set
-# CONFIG_CMD_EDITENV is not set
+CONFIG_CMD_LICENSE=y
+# CONFIG_CMD_BOOTD is not set
 # CONFIG_CMD_ELF is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_EXPORTENV is not set
-CONFIG_CMD_FLASH=y
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_GPIO is not set
 # CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EXPORTENV is not set
 # CONFIG_CMD_IMPORTENV is not set
-CONFIG_CMD_LED=y
-CONFIG_CMD_LICENSE=y
-CONFIG_CMD_LOADB=y
-# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_ENV_EXISTS is not set
+# CONFIG_CMD_CRC32 is not set
 CONFIG_CMD_MEMINFO=y
-# CONFIG_CMD_MISC is not set
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
-# CONFIG_CMD_SAVEENV is not set
-# CONFIG_CMD_XIMG is not set
-CONFIG_DEFAULT_DEVICE_TREE="sfr,nb4-ser"
-CONFIG_DISPLAY_CPUINFO=y
+# CONFIG_CMD_MISC is not set
 # CONFIG_DM_DEVICE_REMOVE is not set
 CONFIG_DM_GPIO=y
-CONFIG_DM_RESET=y
-CONFIG_DM_SERIAL=y
-CONFIG_HUSH_PARSER=y
+CONFIG_BCM6345_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_BCM6358=y
 CONFIG_LED_GPIO=y
-CONFIG_MIPS=y
-# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
-# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
-CONFIG_MIPS_BOOT_FDT=y
 CONFIG_MTD=y
-CONFIG_MTD_DEVICE=y
 CONFIG_MTD_NOR_FLASH=y
-CONFIG_OF_STDOUT_VIA_ALIAS=y
-CONFIG_RESET=y
+CONFIG_CFI_FLASH=y
+CONFIG_DM_RESET=y
 CONFIG_RESET_BCM6345=y
-CONFIG_SOC_BMIPS_BCM6358=y
 # CONFIG_SPL_SERIAL_PRESENT is not set
-# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_SYS_PROMPT="NB4-SER # "
-CONFIG_SYS_TEXT_BASE=0x80010000
+CONFIG_DM_SERIAL=y
+CONFIG_BCM6345_SERIAL=y
diff --git a/configs/stm32f746-disco_defconfig b/configs/stm32f746-disco_defconfig
index 4322aad14d..ca8d605f9e 100644
--- a/configs/stm32f746-disco_defconfig
+++ b/configs/stm32f746-disco_defconfig
@@ -1,5 +1,6 @@
 CONFIG_ARM=y
 CONFIG_STM32=y
+CONFIG_SYS_MALLOC_F_LEN=0xC00
 CONFIG_STM32F7=y
 CONFIG_TARGET_STM32F746_DISCO=y
 CONFIG_DEFAULT_DEVICE_TREE="stm32f746-disco"
@@ -24,10 +25,10 @@ CONFIG_CMD_DNS=y
 CONFIG_CMD_LINK_LOCAL=y
 CONFIG_CMD_TIMER=y
 CONFIG_OF_CONTROL=y
-CONFIG_DM_SEQ_ALIAS=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_NETCONSOLE=y
 CONFIG_CLK=y
+CONFIG_DM_GPIO=y
 # CONFIG_MMC is not set
 CONFIG_MTD=y
 CONFIG_MTD_NOR_FLASH=y
@@ -39,17 +40,10 @@ CONFIG_ETH_DESIGNWARE=y
 CONFIG_PINCTRL=y
 # CONFIG_PINCTRL_FULL is not set
 CONFIG_PINCTRL_STM32=y
+CONFIG_RAM=y
+CONFIG_STM32_SDRAM=y
 # CONFIG_SPL_SERIAL_PRESENT is not set
 CONFIG_DM_SPI=y
 CONFIG_STM32_QSPI=y
 CONFIG_OF_LIBFDT_OVERLAY=y
 # CONFIG_EFI_LOADER is not set
-CONFIG_CLK=y
-CONFIG_PINCTRL=y
-# CONFIG_PINCTRL_FULL is not set
-CONFIG_PINCTRL_STM32=y
-CONFIG_RAM=y
-CONFIG_STM32_SDRAM=y
-CONFIG_DM_GPIO=y
-CONFIG_STM32F7_GPIO=y
-CONFIG_SYS_MALLOC_F_LEN=0xC00
diff --git a/configs/tbs2910_defconfig b/configs/tbs2910_defconfig
index da042ae03f..ac8f9c667c 100644
--- a/configs/tbs2910_defconfig
+++ b/configs/tbs2910_defconfig
@@ -2,11 +2,11 @@ CONFIG_ARM=y
 CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_MX6=y
 CONFIG_TARGET_TBS2910=y
-CONFIG_PRE_CONSOLE_BUFFER=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_FIT=y
 CONFIG_BOOTDELAY=3
+CONFIG_PRE_CONSOLE_BUFFER=y
 CONFIG_PRE_CON_BUF_ADDR=0x7c000000
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
diff --git a/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig b/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
index fbeabdee4e..996143536b 100644
--- a/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
+++ b/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
@@ -3,8 +3,8 @@ CONFIG_SYS_CONFIG_NAME="xilinx_zynqmp_zc1751_xm015_dc1"
 CONFIG_ARCH_ZYNQMP=y
 CONFIG_SYS_TEXT_BASE=0x8000000
 CONFIG_SYS_MALLOC_F_LEN=0x8000
-CONFIG_ZYNQMP_USB=y
 CONFIG_IDENT_STRING=" Xilinx ZynqMP ZC1751 xm015 dc1"
+CONFIG_ZYNQMP_USB=y
 CONFIG_DEFAULT_DEVICE_TREE="zynqmp-zc1751-xm015-dc1"
 CONFIG_AHCI=y
 CONFIG_DISTRO_DEFAULTS=y
diff --git a/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig b/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig
index 6682b679b3..01882bf3dd 100644
--- a/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig
+++ b/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig
@@ -4,9 +4,9 @@ CONFIG_ARCH_ZYNQMP=y
 CONFIG_SYS_TEXT_BASE=0x8000000
 CONFIG_SYS_MALLOC_F_LEN=0x8000
 # CONFIG_SPL_LIBDISK_SUPPORT is not set
+CONFIG_IDENT_STRING=" Xilinx ZynqMP ZC1751 xm016 dc2"
 # CONFIG_SPL_FAT_SUPPORT is not set
 CONFIG_ZYNQMP_USB=y
-CONFIG_IDENT_STRING=" Xilinx ZynqMP ZC1751 xm016 dc2"
 CONFIG_DEFAULT_DEVICE_TREE="zynqmp-zc1751-xm016-dc2"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
diff --git a/configs/xilinx_zynqmp_zcu102_defconfig b/configs/xilinx_zynqmp_zcu102_defconfig
index bfb5c04153..e7433198dd 100644
--- a/configs/xilinx_zynqmp_zcu102_defconfig
+++ b/configs/xilinx_zynqmp_zcu102_defconfig
@@ -3,8 +3,8 @@ CONFIG_SYS_CONFIG_NAME="xilinx_zynqmp_zcu102"
 CONFIG_ARCH_ZYNQMP=y
 CONFIG_SYS_TEXT_BASE=0x8000000
 CONFIG_SYS_MALLOC_F_LEN=0x8000
-CONFIG_ZYNQMP_USB=y
 CONFIG_IDENT_STRING=" Xilinx ZynqMP ZCU102"
+CONFIG_ZYNQMP_USB=y
 CONFIG_DEFAULT_DEVICE_TREE="zynqmp-zcu102"
 CONFIG_AHCI=y
 CONFIG_DISTRO_DEFAULTS=y
diff --git a/configs/xilinx_zynqmp_zcu102_revB_defconfig b/configs/xilinx_zynqmp_zcu102_revB_defconfig
index 4ba1ac6488..afad4fa1e7 100644
--- a/configs/xilinx_zynqmp_zcu102_revB_defconfig
+++ b/configs/xilinx_zynqmp_zcu102_revB_defconfig
@@ -3,8 +3,8 @@ CONFIG_SYS_CONFIG_NAME="xilinx_zynqmp_zcu102"
 CONFIG_ARCH_ZYNQMP=y
 CONFIG_SYS_TEXT_BASE=0x8000000
 CONFIG_SYS_MALLOC_F_LEN=0x8000
-CONFIG_ZYNQMP_USB=y
 CONFIG_IDENT_STRING=" Xilinx ZynqMP ZCU102"
+CONFIG_ZYNQMP_USB=y
 CONFIG_DEFAULT_DEVICE_TREE="zynqmp-zcu102-revB"
 CONFIG_AHCI=y
 CONFIG_DISTRO_DEFAULTS=y
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 02/29] Convert CONFIG_SCSI to Kconfig
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
  2017-06-05 19:14 ` [U-Boot] [PATCH 01/29] configs: Resync with savedefconfig Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  2:12   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 03/29] scsi: Drop sym53c8xx driver Simon Glass
                   ` (26 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

This converts the following to Kconfig:
   CONFIG_SCSI

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 README                                      |  1 -
 arch/Kconfig                                |  1 +
 arch/arm/Kconfig                            | 10 ++++++++++
 arch/arm/cpu/armv7/ls102xa/Kconfig          |  1 +
 arch/arm/cpu/armv8/fsl-layerscape/Kconfig   |  2 ++
 arch/arm/include/asm/arch-ls102xa/config.h  |  1 -
 arch/arm/mach-mvebu/Kconfig                 |  2 ++
 arch/arm/mach-omap2/omap5/Kconfig           |  2 ++
 arch/powerpc/cpu/mpc85xx/Kconfig            |  1 +
 arch/powerpc/cpu/mpc86xx/Kconfig            |  1 +
 board/congatec/Kconfig                      |  1 +
 board/dfi/Kconfig                           |  1 +
 configs/A10-OLinuXino-Lime_defconfig        |  1 +
 configs/A20-OLinuXino-Lime2_defconfig       |  1 +
 configs/A20-OLinuXino-Lime_defconfig        |  1 +
 configs/A20-OLinuXino_MICRO_defconfig       |  1 +
 configs/A20-Olimex-SOM-EVB_defconfig        |  1 +
 configs/Bananapi_M2_Ultra_defconfig         |  1 +
 configs/Bananapi_defconfig                  |  1 +
 configs/Bananapro_defconfig                 |  1 +
 configs/Cubieboard2_defconfig               |  1 +
 configs/Cubieboard_defconfig                |  1 +
 configs/Cubietruck_defconfig                |  1 +
 configs/Itead_Ibox_A20_defconfig            |  1 +
 configs/Lamobo_R1_defconfig                 |  1 +
 configs/Linksprite_pcDuino3_Nano_defconfig  |  1 +
 configs/Linksprite_pcDuino3_defconfig       |  1 +
 configs/MPC8544DS_defconfig                 |  1 +
 configs/MPC8610HPCD_defconfig               |  1 +
 configs/Marsboard_A10_defconfig             |  1 +
 configs/Mele_A1000_defconfig                |  1 +
 configs/Mele_M5_defconfig                   |  1 +
 configs/Orangepi_defconfig                  |  1 +
 configs/Orangepi_mini_defconfig             |  1 +
 configs/PIP405_defconfig                    |  1 +
 configs/Wits_Pro_A20_DKT_defconfig          |  1 +
 configs/bayleybay_defconfig                 |  1 +
 configs/chromebook_link64_defconfig         |  1 +
 configs/chromebook_link_defconfig           |  1 +
 configs/chromebook_samus_defconfig          |  1 +
 configs/chromebox_panther_defconfig         |  1 +
 configs/cm_t54_defconfig                    |  1 +
 configs/controlcenterdc_defconfig           |  1 +
 configs/cougarcanyon2_defconfig             |  1 +
 configs/crownbay_defconfig                  |  1 +
 configs/db-88f6820-gp_defconfig             |  1 +
 configs/highbank_defconfig                  |  1 +
 configs/ls1012aqds_qspi_defconfig           |  1 +
 configs/ls2081ardb_defconfig                |  1 +
 configs/minnowmax_defconfig                 |  1 +
 configs/omap5_uevm_defconfig                |  1 +
 configs/som-db5800-som-6867_defconfig       |  1 +
 configs/xilinx_zynqmp_ep_defconfig          |  1 +
 configs/xilinx_zynqmp_zcu102_defconfig      |  1 +
 configs/xilinx_zynqmp_zcu102_revB_defconfig |  1 +
 drivers/block/Kconfig                       |  9 +++++++++
 include/config_cmd_all.h                    |  1 -
 include/configs/MPC8544DS.h                 |  1 -
 include/configs/MPC8572DS.h                 |  1 -
 include/configs/MPC8610HPCD.h               |  1 -
 include/configs/MPC8641HPCN.h               |  1 -
 include/configs/PIP405.h                    |  1 -
 include/configs/am57xx_evm.h                |  1 -
 include/configs/cm_t54.h                    |  1 -
 include/configs/controlcenterdc.h           |  1 -
 include/configs/db-88f6820-gp.h             |  1 -
 include/configs/dra7xx_evm.h                |  1 -
 include/configs/efi-x86.h                   |  1 -
 include/configs/galileo.h                   |  1 -
 include/configs/highbank.h                  |  1 -
 include/configs/ls1012aqds.h                |  1 -
 include/configs/ls1012ardb.h                |  1 -
 include/configs/ls1043aqds.h                |  1 -
 include/configs/ls1046aqds.h                |  1 -
 include/configs/ls1046ardb.h                |  1 -
 include/configs/ls2080aqds.h                |  1 -
 include/configs/ls2080ardb.h                |  1 -
 include/configs/mvebu_armada-37xx.h         |  1 -
 include/configs/mvebu_armada-8k.h           |  1 -
 include/configs/omap5_uevm.h                |  1 -
 include/configs/qemu-x86.h                  |  1 -
 include/configs/sandbox.h                   |  1 -
 include/configs/sunxi-common.h              |  1 -
 include/configs/x86-common.h                |  1 -
 include/configs/xilinx_zynqmp.h             |  1 -
 scripts/config_whitelist.txt                |  1 -
 86 files changed, 74 insertions(+), 32 deletions(-)

diff --git a/README b/README
index 075d919df3..750b7351fe 100644
--- a/README
+++ b/README
@@ -881,7 +881,6 @@ The following options need to be configured:
 		CONFIG_CMD_RUN		  run command in env variable
 		CONFIG_CMD_SANDBOX	* sb command to access sandbox features
 		CONFIG_CMD_SAVES	* save S record dump
-		CONFIG_SCSI		* SCSI Support
 		CONFIG_CMD_SDRAM	* print SDRAM configuration information
 					  (requires CONFIG_CMD_I2C)
 		CONFIG_CMD_SETGETDCR	  Support for DCR Register access
diff --git a/arch/Kconfig b/arch/Kconfig
index e44767113d..1f874a3e32 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -79,6 +79,7 @@ config SANDBOX
 	imply FAT_WRITE
 	imply HASH_VERIFY
 	imply LZMA
+	imply SCSI
 
 config SH
 	bool "SuperH architecture"
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index deb7b24682..24bb0baeee 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -787,6 +787,7 @@ config TARGET_LS2080AQDS
 	  The LS2080A Development System (QDS) is a high-performance
 	  development platform that supports the QorIQ LS2080A
 	  Layerscape Architecture processor.
+	imply SCSI
 
 config TARGET_LS2080ARDB
 	bool "Support ls2080ardb"
@@ -801,6 +802,7 @@ config TARGET_LS2080ARDB
 	  The LS2080A Reference design board (RDB) is a high-performance
 	  development platform that supports the QorIQ LS2080A
 	  Layerscape Architecture processor.
+	imply SCSI
 
 config TARGET_LS2081ARDB
 	bool "Support ls2081ardb"
@@ -843,6 +845,7 @@ config TARGET_LS1012ARDB
 	select ARCH_LS1012A
 	select ARM64
 	select BOARD_LATE_INIT
+	imply SCSI
 	help
 	  Support for Freescale LS1012ARDB platform.
 	  The LS1012A Reference design board (RDB) is a high-performance
@@ -871,6 +874,7 @@ config TARGET_LS1021AQDS
 	select LS1_DEEP_SLEEP
 	select SYS_FSL_DDR
 	select BOARD_EARLY_INIT_F
+	imply SCSI
 
 config TARGET_LS1021ATWR
 	bool "Support ls1021atwr"
@@ -883,6 +887,7 @@ config TARGET_LS1021ATWR
 	select ARCH_SUPPORT_PSCI
 	select LS1_DEEP_SLEEP
 	select BOARD_EARLY_INIT_F
+	imply SCSI
 
 config TARGET_LS1021AIOT
 	bool "Support ls1021aiot"
@@ -893,6 +898,7 @@ config TARGET_LS1021AIOT
 	select SUPPORT_SPL
 	select ARCH_LS1021A
 	select ARCH_SUPPORT_PSCI
+	imply SCSI
 	help
 	  Support for Freescale LS1021AIOT platform.
 	  The LS1021A Freescale board (IOT) is a high-performance
@@ -907,6 +913,7 @@ config TARGET_LS1043AQDS
 	select BOARD_LATE_INIT
 	select SUPPORT_SPL
 	select BOARD_EARLY_INIT_F
+	imply SCSI
 	help
 	  Support for Freescale LS1043AQDS platform.
 
@@ -918,6 +925,7 @@ config TARGET_LS1043ARDB
 	select BOARD_LATE_INIT
 	select SUPPORT_SPL
 	select BOARD_EARLY_INIT_F
+	imply SCSI
 	help
 	  Support for Freescale LS1043ARDB platform.
 
@@ -930,6 +938,7 @@ config TARGET_LS1046AQDS
 	select SUPPORT_SPL
 	select DM_SPI_FLASH if DM_SPI
 	select BOARD_EARLY_INIT_F
+	imply SCSI
 	help
 	  Support for Freescale LS1046AQDS platform.
 	  The LS1046A Development System (QDS) is a high-performance
@@ -951,6 +960,7 @@ config TARGET_LS1046ARDB
 	  The LS1046A Reference Design Board (RDB) is a high-performance
 	  development platform that supports the QorIQ LS1046A
 	  Layerscape Architecture processor.
+	imply SCSI
 
 config TARGET_H2200
 	bool "Support h2200"
diff --git a/arch/arm/cpu/armv7/ls102xa/Kconfig b/arch/arm/cpu/armv7/ls102xa/Kconfig
index b61f3cdcde..6a013b2183 100644
--- a/arch/arm/cpu/armv7/ls102xa/Kconfig
+++ b/arch/arm/cpu/armv7/ls102xa/Kconfig
@@ -14,6 +14,7 @@ config ARCH_LS1021A
 	select SYS_FSL_HAS_SEC
 	select SYS_FSL_SEC_COMPAT_5
 	select SYS_FSL_SEC_LE
+	imply SCSI
 
 menu "LS102xA architecture"
 	depends on ARCH_LS1021A
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
index d8b285dcd7..5825f9b726 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
+++ b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
@@ -26,6 +26,7 @@ config ARCH_LS1043A
 	select SYS_FSL_HAS_DDR4
 	select ARCH_EARLY_INIT_R
 	select BOARD_EARLY_INIT_F
+	imply SCSI
 
 config ARCH_LS1046A
 	bool
@@ -46,6 +47,7 @@ config ARCH_LS1046A
 	select SYS_FSL_SRDS_2
 	select ARCH_EARLY_INIT_R
 	select BOARD_EARLY_INIT_F
+	imply SCSI
 
 config ARCH_LS2080A
 	bool
diff --git a/arch/arm/include/asm/arch-ls102xa/config.h b/arch/arm/include/asm/arch-ls102xa/config.h
index 5c4da0f0e3..fc954c5366 100644
--- a/arch/arm/include/asm/arch-ls102xa/config.h
+++ b/arch/arm/include/asm/arch-ls102xa/config.h
@@ -81,7 +81,6 @@
 
 /* SATA */
 #define AHCI_BASE_ADDR				(CONFIG_SYS_IMMR + 0x02200000)
-#define CONFIG_SCSI
 #define CONFIG_LIBATA
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index 6ae54ef46a..89476a663a 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -77,6 +77,7 @@ config TARGET_CLEARFOG
 config TARGET_MVEBU_ARMADA_37XX
 	bool "Support Armada 37xx platforms"
 	select ARMADA_3700
+	imply SCSI
 
 config TARGET_DB_88F6720
 	bool "Support DB-88F6720 Armada 375"
@@ -94,6 +95,7 @@ config TARGET_MVEBU_ARMADA_8K
 	bool "Support Armada 7k/8k platforms"
 	select ARMADA_8K
 	select BOARD_LATE_INIT
+	imply SCSI
 
 config TARGET_DB_MV784MP_GP
 	bool "Support db-mv784mp-gp"
diff --git a/arch/arm/mach-omap2/omap5/Kconfig b/arch/arm/mach-omap2/omap5/Kconfig
index 1a66abdeb2..08f45bc868 100644
--- a/arch/arm/mach-omap2/omap5/Kconfig
+++ b/arch/arm/mach-omap2/omap5/Kconfig
@@ -25,12 +25,14 @@ config TARGET_DRA7XX_EVM
 	select DRA7XX
 	select TI_I2C_BOARD_DETECT
 	select PHYS_64BIT
+	imply SCSI
 
 config TARGET_AM57XX_EVM
 	bool "AM57XX"
 	select BOARD_LATE_INIT
 	select DRA7XX
 	select TI_I2C_BOARD_DETECT
+	imply SCSI
 
 endchoice
 
diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig
index 88d56a9a32..cbbb19f06d 100644
--- a/arch/powerpc/cpu/mpc85xx/Kconfig
+++ b/arch/powerpc/cpu/mpc85xx/Kconfig
@@ -125,6 +125,7 @@ config TARGET_MPC8572DS
 	select ARCH_MPC8572
 # Use DDR3 controller with DDR2 DIMMs on this board
 	select SYS_FSL_DDRC_GEN3
+	imply SCSI
 
 config TARGET_P1010RDB_PA
 	bool "Support P1010RDB_PA"
diff --git a/arch/powerpc/cpu/mpc86xx/Kconfig b/arch/powerpc/cpu/mpc86xx/Kconfig
index fcac6584e8..2cc180da38 100644
--- a/arch/powerpc/cpu/mpc86xx/Kconfig
+++ b/arch/powerpc/cpu/mpc86xx/Kconfig
@@ -21,6 +21,7 @@ config TARGET_MPC8610HPCD
 config TARGET_MPC8641HPCN
 	bool "Support MPC8641HPCN"
 	select ARCH_MPC8641
+	imply SCSI
 
 config TARGET_XPEDITE517X
 	bool "Support xpedite517x"
diff --git a/board/congatec/Kconfig b/board/congatec/Kconfig
index 875d1ae07b..ff5a1d84a1 100644
--- a/board/congatec/Kconfig
+++ b/board/congatec/Kconfig
@@ -13,6 +13,7 @@ choice
 config TARGET_CONGA_QEVAL20_QA3_E3845
 	bool "congatec QEVAL 2.0 & conga-QA3/E3845"
 	select BOARD_LATE_INIT
+	imply SCSI
 	help
 	  This is the congatec Qseven 2.0 evaluation carrier board
 	  (conga-QEVAL) equipped with the conga-QA3/E3845-4G SoM.
diff --git a/board/dfi/Kconfig b/board/dfi/Kconfig
index 25d0a11ce1..d2a1d78783 100644
--- a/board/dfi/Kconfig
+++ b/board/dfi/Kconfig
@@ -12,6 +12,7 @@ choice
 
 config TARGET_DFI_BT700
 	bool "DFI BT700 BayTrail"
+	imply SCSI
 	help
 	  This is the DFI Q7X-151 baseboard equipped with the
 	  DFI BayTrail Bt700 SoM. It contains an Atom E3845 with
diff --git a/configs/A10-OLinuXino-Lime_defconfig b/configs/A10-OLinuXino-Lime_defconfig
index ec16a44fbd..914302276f 100644
--- a/configs/A10-OLinuXino-Lime_defconfig
+++ b/configs/A10-OLinuXino-Lime_defconfig
@@ -18,6 +18,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_SUN4I_EMAC=y
 CONFIG_AXP_ALDO3_VOLT=2800
 CONFIG_AXP_ALDO4_VOLT=2800
diff --git a/configs/A20-OLinuXino-Lime2_defconfig b/configs/A20-OLinuXino-Lime2_defconfig
index 1f2daa6706..f7b600be5b 100644
--- a/configs/A20-OLinuXino-Lime2_defconfig
+++ b/configs/A20-OLinuXino-Lime2_defconfig
@@ -20,6 +20,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_PARTITION_UUIDS is not set
+CONFIG_SCSI=y
 CONFIG_DFU_RAM=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
diff --git a/configs/A20-OLinuXino-Lime_defconfig b/configs/A20-OLinuXino-Lime_defconfig
index 7f63d4af54..182a8f5f74 100644
--- a/configs/A20-OLinuXino-Lime_defconfig
+++ b/configs/A20-OLinuXino-Lime_defconfig
@@ -16,6 +16,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SUN7I_GMAC=y
 CONFIG_AXP_ALDO3_VOLT=2800
diff --git a/configs/A20-OLinuXino_MICRO_defconfig b/configs/A20-OLinuXino_MICRO_defconfig
index 89e87e799b..ae98e41685 100644
--- a/configs/A20-OLinuXino_MICRO_defconfig
+++ b/configs/A20-OLinuXino_MICRO_defconfig
@@ -19,6 +19,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SUN7I_GMAC=y
 CONFIG_AXP_ALDO3_VOLT=2800
diff --git a/configs/A20-Olimex-SOM-EVB_defconfig b/configs/A20-Olimex-SOM-EVB_defconfig
index 6c87648d4f..61fe5e6390 100644
--- a/configs/A20-Olimex-SOM-EVB_defconfig
+++ b/configs/A20-Olimex-SOM-EVB_defconfig
@@ -20,6 +20,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
 CONFIG_SUN7I_GMAC=y
diff --git a/configs/Bananapi_M2_Ultra_defconfig b/configs/Bananapi_M2_Ultra_defconfig
index 4332eca68f..8c409faab8 100644
--- a/configs/Bananapi_M2_Ultra_defconfig
+++ b/configs/Bananapi_M2_Ultra_defconfig
@@ -14,5 +14,6 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
+CONFIG_SCSI=y
 CONFIG_AXP_DLDO4_VOLT=2500
 CONFIG_AXP_ELDO3_VOLT=1200
diff --git a/configs/Bananapi_defconfig b/configs/Bananapi_defconfig
index fe75eef513..352a18ec8c 100644
--- a/configs/Bananapi_defconfig
+++ b/configs/Bananapi_defconfig
@@ -17,6 +17,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_NETCONSOLE=y
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
 CONFIG_SUN7I_GMAC=y
diff --git a/configs/Bananapro_defconfig b/configs/Bananapro_defconfig
index df65922e83..4218d5a97a 100644
--- a/configs/Bananapro_defconfig
+++ b/configs/Bananapro_defconfig
@@ -19,6 +19,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_NETCONSOLE=y
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
 CONFIG_SUN7I_GMAC=y
diff --git a/configs/Cubieboard2_defconfig b/configs/Cubieboard2_defconfig
index 02c503f672..dc2722a9bf 100644
--- a/configs/Cubieboard2_defconfig
+++ b/configs/Cubieboard2_defconfig
@@ -15,6 +15,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SUN7I_GMAC=y
 CONFIG_USB_EHCI_HCD=y
diff --git a/configs/Cubieboard_defconfig b/configs/Cubieboard_defconfig
index a8e9c988d5..f83a691a26 100644
--- a/configs/Cubieboard_defconfig
+++ b/configs/Cubieboard_defconfig
@@ -15,5 +15,6 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_SUN4I_EMAC=y
 CONFIG_USB_EHCI_HCD=y
diff --git a/configs/Cubietruck_defconfig b/configs/Cubietruck_defconfig
index f9d56c8f9d..cbd535c2bc 100644
--- a/configs/Cubietruck_defconfig
+++ b/configs/Cubietruck_defconfig
@@ -22,6 +22,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_PARTITION_UUIDS is not set
+CONFIG_SCSI=y
 CONFIG_DFU_RAM=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
diff --git a/configs/Itead_Ibox_A20_defconfig b/configs/Itead_Ibox_A20_defconfig
index 4bae19f2fa..bab25b401c 100644
--- a/configs/Itead_Ibox_A20_defconfig
+++ b/configs/Itead_Ibox_A20_defconfig
@@ -15,6 +15,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SUN7I_GMAC=y
 CONFIG_USB_EHCI_HCD=y
diff --git a/configs/Lamobo_R1_defconfig b/configs/Lamobo_R1_defconfig
index cc29d606a9..2ec0847e8a 100644
--- a/configs/Lamobo_R1_defconfig
+++ b/configs/Lamobo_R1_defconfig
@@ -17,6 +17,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
 CONFIG_SUN7I_GMAC=y
diff --git a/configs/Linksprite_pcDuino3_Nano_defconfig b/configs/Linksprite_pcDuino3_Nano_defconfig
index 80416cb7b1..1e61cd20ba 100644
--- a/configs/Linksprite_pcDuino3_Nano_defconfig
+++ b/configs/Linksprite_pcDuino3_Nano_defconfig
@@ -17,6 +17,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
 CONFIG_SUN7I_GMAC=y
diff --git a/configs/Linksprite_pcDuino3_defconfig b/configs/Linksprite_pcDuino3_defconfig
index b9f89a013e..6f4a02f8d4 100644
--- a/configs/Linksprite_pcDuino3_defconfig
+++ b/configs/Linksprite_pcDuino3_defconfig
@@ -15,6 +15,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SUN7I_GMAC=y
 CONFIG_USB_EHCI_HCD=y
diff --git a/configs/MPC8544DS_defconfig b/configs/MPC8544DS_defconfig
index 1798622e34..3db3a13623 100644
--- a/configs/MPC8544DS_defconfig
+++ b/configs/MPC8544DS_defconfig
@@ -14,6 +14,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
+CONFIG_SCSI=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_NETDEVICES=y
diff --git a/configs/MPC8610HPCD_defconfig b/configs/MPC8610HPCD_defconfig
index d9499905fd..6aef6d8434 100644
--- a/configs/MPC8610HPCD_defconfig
+++ b/configs/MPC8610HPCD_defconfig
@@ -15,6 +15,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
 CONFIG_CMD_EXT2=y
 CONFIG_DOS_PARTITION=y
+CONFIG_SCSI=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
diff --git a/configs/Marsboard_A10_defconfig b/configs/Marsboard_A10_defconfig
index 6b8bd1ad20..516a16f73e 100644
--- a/configs/Marsboard_A10_defconfig
+++ b/configs/Marsboard_A10_defconfig
@@ -11,6 +11,7 @@ CONFIG_SPL=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_SUN4I_EMAC=y
 CONFIG_SUNXI_NO_PMIC=y
 CONFIG_USB_EHCI_HCD=y
diff --git a/configs/Mele_A1000_defconfig b/configs/Mele_A1000_defconfig
index 0442360a5c..0c9e8d1693 100644
--- a/configs/Mele_A1000_defconfig
+++ b/configs/Mele_A1000_defconfig
@@ -15,5 +15,6 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_SUN4I_EMAC=y
 CONFIG_USB_EHCI_HCD=y
diff --git a/configs/Mele_M5_defconfig b/configs/Mele_M5_defconfig
index 4c377e3daf..400a16505a 100644
--- a/configs/Mele_M5_defconfig
+++ b/configs/Mele_M5_defconfig
@@ -16,6 +16,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_SUN7I_GMAC=y
 CONFIG_USB_EHCI_HCD=y
diff --git a/configs/Orangepi_defconfig b/configs/Orangepi_defconfig
index b8c1ea4d7c..ed3e6786c6 100644
--- a/configs/Orangepi_defconfig
+++ b/configs/Orangepi_defconfig
@@ -19,6 +19,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
 CONFIG_SUN7I_GMAC=y
diff --git a/configs/Orangepi_mini_defconfig b/configs/Orangepi_mini_defconfig
index 19c35ef103..56f405ceed 100644
--- a/configs/Orangepi_mini_defconfig
+++ b/configs/Orangepi_mini_defconfig
@@ -21,6 +21,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
 CONFIG_SUN7I_GMAC=y
diff --git a/configs/PIP405_defconfig b/configs/PIP405_defconfig
index 07f1b54ae9..81083b46cc 100644
--- a/configs/PIP405_defconfig
+++ b/configs/PIP405_defconfig
@@ -26,6 +26,7 @@ CONFIG_CMD_DATE=y
 CONFIG_CMD_FAT=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
+CONFIG_SCSI=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_BAUDRATE=9600
diff --git a/configs/Wits_Pro_A20_DKT_defconfig b/configs/Wits_Pro_A20_DKT_defconfig
index 8658ef6b4c..2a2f26d38f 100644
--- a/configs/Wits_Pro_A20_DKT_defconfig
+++ b/configs/Wits_Pro_A20_DKT_defconfig
@@ -19,6 +19,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_SCSI=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_RGMII=y
 CONFIG_SUN7I_GMAC=y
diff --git a/configs/bayleybay_defconfig b/configs/bayleybay_defconfig
index d2f9f24a19..14b74c4a16 100644
--- a/configs/bayleybay_defconfig
+++ b/configs/bayleybay_defconfig
@@ -46,6 +46,7 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
+CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_MMC=y
 CONFIG_MMC_PCI=y
diff --git a/configs/chromebook_link64_defconfig b/configs/chromebook_link64_defconfig
index 749cfd43b0..8a76de1361 100644
--- a/configs/chromebook_link64_defconfig
+++ b/configs/chromebook_link64_defconfig
@@ -56,6 +56,7 @@ CONFIG_REGMAP=y
 CONFIG_SPL_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_SPL_SYSCON=y
+CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_INTEL=y
diff --git a/configs/chromebook_link_defconfig b/configs/chromebook_link_defconfig
index 5ebb556f90..a463270514 100644
--- a/configs/chromebook_link_defconfig
+++ b/configs/chromebook_link_defconfig
@@ -39,6 +39,7 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
+CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_INTEL=y
diff --git a/configs/chromebook_samus_defconfig b/configs/chromebook_samus_defconfig
index 60cb9a37d5..4b797a2d36 100644
--- a/configs/chromebook_samus_defconfig
+++ b/configs/chromebook_samus_defconfig
@@ -39,6 +39,7 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
+CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_INTEL_BROADWELL_GPIO=y
 CONFIG_CROS_EC=y
diff --git a/configs/chromebox_panther_defconfig b/configs/chromebox_panther_defconfig
index 0d65a90eba..51a934fe7a 100644
--- a/configs/chromebox_panther_defconfig
+++ b/configs/chromebox_panther_defconfig
@@ -36,6 +36,7 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
+CONFIG_SCSI=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
 CONFIG_SPI_FLASH=y
diff --git a/configs/cm_t54_defconfig b/configs/cm_t54_defconfig
index ec26f999ba..6d18eac559 100644
--- a/configs/cm_t54_defconfig
+++ b/configs/cm_t54_defconfig
@@ -38,6 +38,7 @@ CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
+CONFIG_SCSI=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
diff --git a/configs/controlcenterdc_defconfig b/configs/controlcenterdc_defconfig
index 037f338993..b719f53541 100644
--- a/configs/controlcenterdc_defconfig
+++ b/configs/controlcenterdc_defconfig
@@ -33,6 +33,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_EFI_PARTITION=y
 CONFIG_OF_BOARD_FIXUP=y
 CONFIG_SPL_OF_TRANSLATE=y
+CONFIG_SCSI=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_PCA953X=y
 CONFIG_DM_I2C=y
diff --git a/configs/cougarcanyon2_defconfig b/configs/cougarcanyon2_defconfig
index f589dec5f4..1008ef7301 100644
--- a/configs/cougarcanyon2_defconfig
+++ b/configs/cougarcanyon2_defconfig
@@ -29,6 +29,7 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
+CONFIG_SCSI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PCI=y
diff --git a/configs/crownbay_defconfig b/configs/crownbay_defconfig
index 4a88f5f3c5..ac50681e19 100644
--- a/configs/crownbay_defconfig
+++ b/configs/crownbay_defconfig
@@ -35,6 +35,7 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
+CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_MMC=y
 CONFIG_MMC_PCI=y
diff --git a/configs/db-88f6820-gp_defconfig b/configs/db-88f6820-gp_defconfig
index 7bdcb818d6..00d02de050 100644
--- a/configs/db-88f6820-gp_defconfig
+++ b/configs/db-88f6820-gp_defconfig
@@ -36,6 +36,7 @@ CONFIG_EFI_PARTITION=y
 # CONFIG_PARTITION_UUIDS is not set
 # CONFIG_SPL_PARTITION_UUIDS is not set
 CONFIG_SPL_OF_TRANSLATE=y
+CONFIG_SCSI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_MMC_SDHCI_MV=y
diff --git a/configs/highbank_defconfig b/configs/highbank_defconfig
index 041d04817f..6f19492251 100644
--- a/configs/highbank_defconfig
+++ b/configs/highbank_defconfig
@@ -23,5 +23,6 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
 # CONFIG_PARTITION_UUIDS is not set
+CONFIG_SCSI=y
 # CONFIG_MMC is not set
 CONFIG_OF_LIBFDT=y
diff --git a/configs/ls1012aqds_qspi_defconfig b/configs/ls1012aqds_qspi_defconfig
index 2124273e1c..695d7d1349 100644
--- a/configs/ls1012aqds_qspi_defconfig
+++ b/configs/ls1012aqds_qspi_defconfig
@@ -31,6 +31,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 # CONFIG_BLK is not set
+CONFIG_SCSI=y
 CONFIG_DM_MMC=y
 # CONFIG_DM_MMC_OPS is not set
 CONFIG_DM_SPI_FLASH=y
diff --git a/configs/ls2081ardb_defconfig b/configs/ls2081ardb_defconfig
index d8420ba77e..bc2792e533 100644
--- a/configs/ls2081ardb_defconfig
+++ b/configs/ls2081ardb_defconfig
@@ -21,6 +21,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_OF_CONTROL=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
+CONFIG_SCSI=y
 CONFIG_FSL_CAAM=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_NETDEVICES=y
diff --git a/configs/minnowmax_defconfig b/configs/minnowmax_defconfig
index aa50e88422..cd12633cc5 100644
--- a/configs/minnowmax_defconfig
+++ b/configs/minnowmax_defconfig
@@ -46,6 +46,7 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
+CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_MMC=y
 CONFIG_MMC_PCI=y
diff --git a/configs/omap5_uevm_defconfig b/configs/omap5_uevm_defconfig
index f5ac38b47c..0af00b14be 100644
--- a/configs/omap5_uevm_defconfig
+++ b/configs/omap5_uevm_defconfig
@@ -32,6 +32,7 @@ CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_ISO_PARTITION=y
+CONFIG_SCSI=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_MMC_OMAP_HS=y
diff --git a/configs/som-db5800-som-6867_defconfig b/configs/som-db5800-som-6867_defconfig
index aaa68552c7..28efc9049c 100644
--- a/configs/som-db5800-som-6867_defconfig
+++ b/configs/som-db5800-som-6867_defconfig
@@ -42,6 +42,7 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
+CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
diff --git a/configs/xilinx_zynqmp_ep_defconfig b/configs/xilinx_zynqmp_ep_defconfig
index 436a22f433..f480bb02f8 100644
--- a/configs/xilinx_zynqmp_ep_defconfig
+++ b/configs/xilinx_zynqmp_ep_defconfig
@@ -45,6 +45,7 @@ CONFIG_OF_EMBED=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_SCSI=y
 CONFIG_DM_SCSI=y
 CONFIG_SATA_CEVA=y
 CONFIG_DFU_RAM=y
diff --git a/configs/xilinx_zynqmp_zcu102_defconfig b/configs/xilinx_zynqmp_zcu102_defconfig
index e7433198dd..1b7de2647b 100644
--- a/configs/xilinx_zynqmp_zcu102_defconfig
+++ b/configs/xilinx_zynqmp_zcu102_defconfig
@@ -38,6 +38,7 @@ CONFIG_OF_EMBED=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_SCSI=y
 CONFIG_DM_SCSI=y
 CONFIG_SATA_CEVA=y
 CONFIG_DFU_RAM=y
diff --git a/configs/xilinx_zynqmp_zcu102_revB_defconfig b/configs/xilinx_zynqmp_zcu102_revB_defconfig
index afad4fa1e7..5285e36ccc 100644
--- a/configs/xilinx_zynqmp_zcu102_revB_defconfig
+++ b/configs/xilinx_zynqmp_zcu102_revB_defconfig
@@ -38,6 +38,7 @@ CONFIG_OF_EMBED=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_SCSI=y
 CONFIG_DM_SCSI=y
 CONFIG_SATA_CEVA=y
 CONFIG_DFU_RAM=y
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index 931defd2ae..b0e8602011 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -19,6 +19,15 @@ config AHCI
 	  operations at present. The block device interface has not been converted
 	  to driver model.
 
+config SCSI
+	bool "Support SCSI controllers"
+	help
+	  This enabled support for SCSI (Small Computer System Interface),
+	  a parallel interface widely used with storage peripherals such as
+	  hard drives and optical drives. The SCSI standards define physical
+	  interfaces as well as protocols for controlling devices and
+	  tranferring data.
+
 config DM_SCSI
 	bool "Support SCSI controllers with driver model"
 	depends on BLK
diff --git a/include/config_cmd_all.h b/include/config_cmd_all.h
index b1f41abf4f..2874a7850d 100644
--- a/include/config_cmd_all.h
+++ b/include/config_cmd_all.h
@@ -25,7 +25,6 @@
 #define CONFIG_CMD_READ		/* Read data from partition	*/
 #define CONFIG_CMD_SANDBOX	/* sb command to access sandbox features */
 #define CONFIG_CMD_SAVES	/* save S record dump		*/
-#define CONFIG_SCSI		/* SCSI Support			*/
 #define CONFIG_CMD_SDRAM	/* SDRAM DIMM SPD info printout */
 #define CONFIG_CMD_TERMINAL	/* built-in Serial Terminal	*/
 #define CONFIG_CMD_UBIFS	/* UBIFS Support		*/
diff --git a/include/configs/MPC8544DS.h b/include/configs/MPC8544DS.h
index 9b2f8364d5..e6f5fed98e 100644
--- a/include/configs/MPC8544DS.h
+++ b/include/configs/MPC8544DS.h
@@ -352,7 +352,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 
 #if defined(CONFIG_PCI)
     #define CONFIG_CMD_PCI
-    #define CONFIG_SCSI
 #endif
 
 /*
diff --git a/include/configs/MPC8572DS.h b/include/configs/MPC8572DS.h
index 79e11bb6f8..d8e0dfd807 100644
--- a/include/configs/MPC8572DS.h
+++ b/include/configs/MPC8572DS.h
@@ -551,7 +551,6 @@
 
 #if defined(CONFIG_PCI)
 #define CONFIG_CMD_PCI
-#define CONFIG_SCSI
 #endif
 
 /*
diff --git a/include/configs/MPC8610HPCD.h b/include/configs/MPC8610HPCD.h
index 2014450be8..1db3a633ef 100644
--- a/include/configs/MPC8610HPCD.h
+++ b/include/configs/MPC8610HPCD.h
@@ -430,7 +430,6 @@
 
 #if defined(CONFIG_PCI)
 #define CONFIG_CMD_PCI
-#define CONFIG_SCSI
 #endif
 
 #define CONFIG_WATCHDOG			/* watchdog enabled */
diff --git a/include/configs/MPC8641HPCN.h b/include/configs/MPC8641HPCN.h
index 4b932103a6..7ff244b081 100644
--- a/include/configs/MPC8641HPCN.h
+++ b/include/configs/MPC8641HPCN.h
@@ -591,7 +591,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 
 #if defined(CONFIG_PCI)
     #define CONFIG_CMD_PCI
-    #define CONFIG_SCSI
 #endif
 
 #undef CONFIG_WATCHDOG			/* watchdog disabled */
diff --git a/include/configs/PIP405.h b/include/configs/PIP405.h
index 393a02dd78..1bcf8bb0dc 100644
--- a/include/configs/PIP405.h
+++ b/include/configs/PIP405.h
@@ -39,7 +39,6 @@
  */
 #define CONFIG_CMD_PCI
 #define CONFIG_CMD_REGINFO
-#define CONFIG_SCSI
 #define CONFIG_CMD_SDRAM
 #define CONFIG_CMD_SAVES
 
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h
index b379e0839d..646015e5f7 100644
--- a/include/configs/am57xx_evm.h
+++ b/include/configs/am57xx_evm.h
@@ -95,7 +95,6 @@
 #define CONFIG_OMAP_USB3PHY1_HOST
 
 /* SATA */
-#define CONFIG_SCSI
 #define CONFIG_LIBATA
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
diff --git a/include/configs/cm_t54.h b/include/configs/cm_t54.h
index 14042ada7d..36475734fc 100644
--- a/include/configs/cm_t54.h
+++ b/include/configs/cm_t54.h
@@ -49,7 +49,6 @@
 #define CONFIG_SPL_SATA_BOOT_DEVICE		0
 #define CONFIG_SYS_SATA_FAT_BOOT_PARTITION	1
 
-#define CONFIG_SCSI
 #define CONFIG_LIBATA
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
diff --git a/include/configs/controlcenterdc.h b/include/configs/controlcenterdc.h
index a04af31284..f10cddafe0 100644
--- a/include/configs/controlcenterdc.h
+++ b/include/configs/controlcenterdc.h
@@ -51,7 +51,6 @@
  * SATA/SCSI/AHCI configuration
  */
 #define CONFIG_LIBATA
-#define CONFIG_SCSI
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
 #define CONFIG_SYS_SCSI_MAX_SCSI_ID	2
diff --git a/include/configs/db-88f6820-gp.h b/include/configs/db-88f6820-gp.h
index 0890a4db62..292bfb8f7d 100644
--- a/include/configs/db-88f6820-gp.h
+++ b/include/configs/db-88f6820-gp.h
@@ -25,7 +25,6 @@
  * Commands configuration
  */
 #define CONFIG_CMD_PCI
-#define CONFIG_SCSI
 
 /* I2C */
 #define CONFIG_SYS_I2C
diff --git a/include/configs/dra7xx_evm.h b/include/configs/dra7xx_evm.h
index 17608a54cd..0582ae5949 100644
--- a/include/configs/dra7xx_evm.h
+++ b/include/configs/dra7xx_evm.h
@@ -162,7 +162,6 @@
 #define CONFIG_OMAP_USB2PHY2_HOST
 
 /* SATA */
-#define CONFIG_SCSI
 #define CONFIG_LIBATA
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
diff --git a/include/configs/efi-x86.h b/include/configs/efi-x86.h
index 5626061e2e..9dcb481707 100644
--- a/include/configs/efi-x86.h
+++ b/include/configs/efi-x86.h
@@ -16,7 +16,6 @@
 #undef CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_IS_NOWHERE
 #undef CONFIG_SCSI_AHCI
-#undef CONFIG_SCSI
 #undef CONFIG_INTEL_ICH6_GPIO
 #undef CONFIG_USB_EHCI_PCI
 
diff --git a/include/configs/galileo.h b/include/configs/galileo.h
index dcbaade54e..00c5434125 100644
--- a/include/configs/galileo.h
+++ b/include/configs/galileo.h
@@ -24,7 +24,6 @@
 
 /* SATA is not supported in Quark SoC */
 #undef CONFIG_SCSI_AHCI
-#undef CONFIG_SCSI
 
 /* 10/100M Ethernet support */
 #define CONFIG_DESIGNWARE_ETH
diff --git a/include/configs/highbank.h b/include/configs/highbank.h
index e15b572e41..533d3e3f82 100644
--- a/include/configs/highbank.h
+++ b/include/configs/highbank.h
@@ -46,7 +46,6 @@
 /*
  * Command line configuration.
  */
-#define CONFIG_SCSI
 
 #define CONFIG_BOOT_RETRY_TIME		-1
 #define CONFIG_RESET_TO_RETRY
diff --git a/include/configs/ls1012aqds.h b/include/configs/ls1012aqds.h
index 5b8500b91b..9e6c7a797c 100644
--- a/include/configs/ls1012aqds.h
+++ b/include/configs/ls1012aqds.h
@@ -135,7 +135,6 @@
 
 /* SATA */
 #define CONFIG_LIBATA
-#define	CONFIG_SCSI
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
 #define CONFIG_CMD_SCSI
diff --git a/include/configs/ls1012ardb.h b/include/configs/ls1012ardb.h
index 276fe1050c..0705bc5f68 100644
--- a/include/configs/ls1012ardb.h
+++ b/include/configs/ls1012ardb.h
@@ -51,7 +51,6 @@
 
 /* SATA */
 #define CONFIG_LIBATA
-#define	CONFIG_SCSI
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
 #define CONFIG_CMD_SCSI
diff --git a/include/configs/ls1043aqds.h b/include/configs/ls1043aqds.h
index 04d74acdeb..87ca36a8e9 100644
--- a/include/configs/ls1043aqds.h
+++ b/include/configs/ls1043aqds.h
@@ -98,7 +98,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_LIBATA
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
-#define CONFIG_SCSI
 
 /* EEPROM */
 #define CONFIG_ID_EEPROM
diff --git a/include/configs/ls1046aqds.h b/include/configs/ls1046aqds.h
index 5d2e819e78..77619ab324 100644
--- a/include/configs/ls1046aqds.h
+++ b/include/configs/ls1046aqds.h
@@ -153,7 +153,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_LIBATA
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
-#define CONFIG_SCSI
 
 /* EEPROM */
 #define CONFIG_ID_EEPROM
diff --git a/include/configs/ls1046ardb.h b/include/configs/ls1046ardb.h
index 6f649a6223..8a6b4e6378 100644
--- a/include/configs/ls1046ardb.h
+++ b/include/configs/ls1046ardb.h
@@ -233,7 +233,6 @@
 #define CONFIG_LIBATA
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
-#define CONFIG_SCSI
 
 #define CONFIG_SYS_SATA				AHCI_BASE_ADDR
 
diff --git a/include/configs/ls2080aqds.h b/include/configs/ls2080aqds.h
index 8a8ee9d351..5e1867d81e 100644
--- a/include/configs/ls2080aqds.h
+++ b/include/configs/ls2080aqds.h
@@ -50,7 +50,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_LIBATA
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
-#define CONFIG_SCSI
 
 #define CONFIG_SYS_SATA1			AHCI_BASE_ADDR1
 #define CONFIG_SYS_SATA2			AHCI_BASE_ADDR2
diff --git a/include/configs/ls2080ardb.h b/include/configs/ls2080ardb.h
index 2dab065be1..e8aacd3dcd 100644
--- a/include/configs/ls2080ardb.h
+++ b/include/configs/ls2080ardb.h
@@ -68,7 +68,6 @@ unsigned long get_board_sys_clk(void);
 #define CONFIG_LIBATA
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
-#define CONFIG_SCSI
 
 #define CONFIG_SYS_SATA1			AHCI_BASE_ADDR1
 #define CONFIG_SYS_SATA2			AHCI_BASE_ADDR2
diff --git a/include/configs/mvebu_armada-37xx.h b/include/configs/mvebu_armada-37xx.h
index 5408490dc6..eb80ac5b48 100644
--- a/include/configs/mvebu_armada-37xx.h
+++ b/include/configs/mvebu_armada-37xx.h
@@ -113,7 +113,6 @@
 /*
  * SATA/SCSI/AHCI configuration
  */
-#define CONFIG_SCSI
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
 #define CONFIG_LIBATA
diff --git a/include/configs/mvebu_armada-8k.h b/include/configs/mvebu_armada-8k.h
index 9d3aeefcd0..ac116edf31 100644
--- a/include/configs/mvebu_armada-8k.h
+++ b/include/configs/mvebu_armada-8k.h
@@ -119,7 +119,6 @@
 /*
  * SATA/SCSI/AHCI configuration
  */
-#define CONFIG_SCSI
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
 #define CONFIG_LIBATA
diff --git a/include/configs/omap5_uevm.h b/include/configs/omap5_uevm.h
index d8b0c023b9..842150706f 100644
--- a/include/configs/omap5_uevm.h
+++ b/include/configs/omap5_uevm.h
@@ -66,7 +66,6 @@
 
 #define CONSOLEDEV		"ttyO2"
 
-#define CONFIG_SCSI
 #define CONFIG_LIBATA
 #define CONFIG_SCSI_AHCI
 #define CONFIG_SCSI_AHCI_PLAT
diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
index 3509c2f659..05eb5ebf91 100644
--- a/include/configs/qemu-x86.h
+++ b/include/configs/qemu-x86.h
@@ -39,7 +39,6 @@
 #define CONFIG_ATAPI
 
 #undef CONFIG_SCSI_AHCI
-#undef CONFIG_SCSI
 #else
 #define CONFIG_SCSI_DEV_LIST		\
 	{PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH9_AHCI}
diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h
index 31ceb5402f..3e09e88ffe 100644
--- a/include/configs/sandbox.h
+++ b/include/configs/sandbox.h
@@ -157,7 +157,6 @@
 #define CONFIG_SYS_ATA_STRIDE		4
 #endif
 
-#define CONFIG_SCSI
 #define CONFIG_SCSI_AHCI_PLAT
 #define CONFIG_SYS_SCSI_MAX_DEVICE	2
 #define CONFIG_SYS_SCSI_MAX_SCSI_ID	8
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index 9b514ff37a..fefd58f769 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -122,7 +122,6 @@
 #define CONFIG_SYS_SCSI_MAX_LUN		1
 #define CONFIG_SYS_SCSI_MAX_DEVICE	(CONFIG_SYS_SCSI_MAX_SCSI_ID * \
 					 CONFIG_SYS_SCSI_MAX_LUN)
-#define CONFIG_SCSI
 #endif
 
 #define CONFIG_SETUP_MEMORY_TAGS
diff --git a/include/configs/x86-common.h b/include/configs/x86-common.h
index b5ef8b5c56..fa417c8ccd 100644
--- a/include/configs/x86-common.h
+++ b/include/configs/x86-common.h
@@ -71,7 +71,6 @@
  * Command line configuration.
  */
 #define CONFIG_CMD_PCI
-#define CONFIG_SCSI
 
 #define CONFIG_CMD_ZBOOT
 
diff --git a/include/configs/xilinx_zynqmp.h b/include/configs/xilinx_zynqmp.h
index c56cd8c98b..991b1b4110 100644
--- a/include/configs/xilinx_zynqmp.h
+++ b/include/configs/xilinx_zynqmp.h
@@ -193,7 +193,6 @@
 #define CONFIG_SYS_SCSI_MAX_LUN		1
 #define CONFIG_SYS_SCSI_MAX_DEVICE	(CONFIG_SYS_SCSI_MAX_SCSI_ID * \
 					 CONFIG_SYS_SCSI_MAX_LUN)
-#define CONFIG_SCSI
 #endif
 
 #define CONFIG_SYS_BOOTM_LEN	(60 * 1024 * 1024)
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index e9531687f3..ef49525407 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -2345,7 +2345,6 @@ CONFIG_SCIF_A
 CONFIG_SCIF_CONSOLE
 CONFIG_SCIF_EXT_CLOCK
 CONFIG_SCIF_USE_EXT_CLK
-CONFIG_SCSI
 CONFIG_SCSI_AHCI
 CONFIG_SCSI_AHCI_PLAT
 CONFIG_SCSI_DEV_ID
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 03/29] scsi: Drop sym53c8xx driver
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
  2017-06-05 19:14 ` [U-Boot] [PATCH 01/29] configs: Resync with savedefconfig Simon Glass
  2017-06-05 19:14 ` [U-Boot] [PATCH 02/29] Convert CONFIG_SCSI to Kconfig Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  2:12   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 04/29] scsi: Drop scsi_print_error() Simon Glass
                   ` (25 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

This driver is for a PowerPC board that will likely be removed soon.
Rather than converting it to driver model, drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 README                       |   5 -
 board/mpl/pip405/README      |   5 +-
 common/scsi.c                |   9 +-
 configs/PIP405_defconfig     |   1 -
 drivers/block/Makefile       |   1 -
 drivers/block/sym53c8xx.c    | 851 -------------------------------------------
 include/configs/PIP405.h     |   9 -
 scripts/config_whitelist.txt |   2 -
 8 files changed, 3 insertions(+), 880 deletions(-)
 delete mode 100644 drivers/block/sym53c8xx.c

diff --git a/README b/README
index 750b7351fe..db092190d6 100644
--- a/README
+++ b/README
@@ -1100,16 +1100,11 @@ The following options need to be configured:
 			Default is 32bit.
 
 - SCSI Support:
-		At the moment only there is only support for the
-		SYM53C8XX SCSI controller; define
-		CONFIG_SCSI_SYM53C8XX to enable it.
-
 		CONFIG_SYS_SCSI_MAX_LUN [8], CONFIG_SYS_SCSI_MAX_SCSI_ID [7] and
 		CONFIG_SYS_SCSI_MAX_DEVICE [CONFIG_SYS_SCSI_MAX_SCSI_ID *
 		CONFIG_SYS_SCSI_MAX_LUN] can be adjusted to define the
 		maximum numbers of LUNs, SCSI ID's and target
 		devices.
-		CONFIG_SYS_SCSI_SYM53C8XX_CCF to fix clock timing (80Mhz)
 
 		The environment variable 'scsidevs' is set to the number of
 		SCSI devices found during the last scan.
diff --git a/board/mpl/pip405/README b/board/mpl/pip405/README
index f039817b79..3983476d57 100644
--- a/board/mpl/pip405/README
+++ b/board/mpl/pip405/README
@@ -97,9 +97,8 @@ ATAPI support (experimental)
 ----------------------------
 CONFIG_ATAPI	enables ATAPI Support
 
-SCSI support (experimental) only SYM53C8xx supported
-----------------------------------------------------
-CONFIG_SCSI_SYM53C8XX		type of SCSI controller
+SCSI support
+------------
 CONFIG_SYS_SCSI_MAX_LUN	8	number of supported LUNs
 CONFIG_SYS_SCSI_MAX_SCSI_ID	7	maximum SCSI ID (0..6)
 CONFIG_SYS_SCSI_MAX_DEVICE	CONFIG_SYS_SCSI_MAX_SCSI_ID * CONFIG_SYS_SCSI_MAX_LUN
diff --git a/common/scsi.c b/common/scsi.c
index c456f5a717..4896fb9350 100644
--- a/common/scsi.c
+++ b/common/scsi.c
@@ -17,14 +17,7 @@
 #ifdef CONFIG_SCSI_DEV_LIST
 #define SCSI_DEV_LIST CONFIG_SCSI_DEV_LIST
 #else
-#ifdef CONFIG_SCSI_SYM53C8XX
-#define SCSI_VEND_ID	0x1000
-#ifndef CONFIG_SCSI_DEV_ID
-#define SCSI_DEV_ID		0x0001
-#else
-#define SCSI_DEV_ID		CONFIG_SCSI_DEV_ID
-#endif
-#elif defined CONFIG_SATA_ULI5288
+#ifdef CONFIG_SATA_ULI5288
 
 #define SCSI_VEND_ID 0x10b9
 #define SCSI_DEV_ID  0x5288
diff --git a/configs/PIP405_defconfig b/configs/PIP405_defconfig
index 81083b46cc..07f1b54ae9 100644
--- a/configs/PIP405_defconfig
+++ b/configs/PIP405_defconfig
@@ -26,7 +26,6 @@ CONFIG_CMD_DATE=y
 CONFIG_CMD_FAT=y
 CONFIG_MAC_PARTITION=y
 CONFIG_ISO_PARTITION=y
-CONFIG_SCSI=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_BAUDRATE=9600
diff --git a/drivers/block/Makefile b/drivers/block/Makefile
index 06450966b1..2a4c9b8f9e 100644
--- a/drivers/block/Makefile
+++ b/drivers/block/Makefile
@@ -29,6 +29,5 @@ obj-$(CONFIG_SATA_SIL3114) += sata_sil3114.o
 obj-$(CONFIG_SATA_SIL) += sata_sil.o
 obj-$(CONFIG_IDE_SIL680) += sil680.o
 obj-$(CONFIG_SANDBOX) += sandbox.o sandbox_scsi.o sata_sandbox.o
-obj-$(CONFIG_SCSI_SYM53C8XX) += sym53c8xx.o
 obj-$(CONFIG_SYSTEMACE) += systemace.o
 obj-$(CONFIG_BLOCK_CACHE) += blkcache.o
diff --git a/drivers/block/sym53c8xx.c b/drivers/block/sym53c8xx.c
deleted file mode 100644
index 50043e68af..0000000000
--- a/drivers/block/sym53c8xx.c
+++ /dev/null
@@ -1,851 +0,0 @@
-/*
- * (C) Copyright 2001
- * Denis Peter, MPL AG Switzerland, d.peter at mpl.ch.
- *
- * SPDX-License-Identifier:	GPL-2.0+
- * partly derived from
- * linux/drivers/scsi/sym53c8xx.c
- *
- */
-
-/*
- * SCSI support based on the chip sym53C810.
- *
- * 09-19-2001 Andreas Heppel, Sysgo RTS GmbH <aheppel@sysgo.de>
- *		The local version of this driver for the BAB750 board does not
- *		use interrupts but polls the chip instead (see the call of
- *		'handle_scsi_int()' in 'scsi_issue()'.
- */
-
-#include <common.h>
-
-#include <command.h>
-#include <pci.h>
-#include <asm/processor.h>
-#include <sym53c8xx.h>
-#include <scsi.h>
-
-#undef	SYM53C8XX_DEBUG
-
-#ifdef	SYM53C8XX_DEBUG
-#define	PRINTF(fmt,args...)	printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
-#if defined(CONFIG_SCSI) && defined(CONFIG_SCSI_SYM53C8XX)
-
-#undef SCSI_SINGLE_STEP
-/*
- * Single Step is only used for debug purposes
- */
-#ifdef SCSI_SINGLE_STEP
-static unsigned long start_script_select;
-static unsigned long start_script_msgout;
-static unsigned long start_script_msgin;
-static unsigned long start_script_msg_ext;
-static unsigned long start_script_cmd;
-static unsigned long start_script_data_in;
-static unsigned long start_script_data_out;
-static unsigned long start_script_status;
-static unsigned long start_script_complete;
-static unsigned long start_script_error;
-static unsigned long start_script_reselection;
-static unsigned int len_script_select;
-static unsigned int len_script_msgout;
-static unsigned int len_script_msgin;
-static unsigned int len_script_msg_ext;
-static unsigned int len_script_cmd;
-static unsigned int len_script_data_in;
-static unsigned int len_script_data_out;
-static unsigned int len_script_status;
-static unsigned int len_script_complete;
-static unsigned int len_script_error;
-static unsigned int len_script_reselection;
-#endif
-
-
-static unsigned short scsi_int_mask;	/* shadow register for SCSI related interrupts */
-static unsigned char  script_int_mask;	/* shadow register for SCRIPT related interrupts */
-static unsigned long script_select[8];	/* script for selection */
-static unsigned long script_msgout[8];	/* script for message out phase (NOT USED) */
-static unsigned long script_msgin[14];	/* script for message in phase */
-static unsigned long script_msg_ext[32]; /* script for message in phase when more than 1 byte message */
-static unsigned long script_cmd[18];    /* script for command phase */
-static unsigned long script_data_in[8]; /* script for data in phase */
-static unsigned long script_data_out[8]; /* script for data out phase */
-static unsigned long script_status[6]; /* script for status phase */
-static unsigned long script_complete[10]; /* script for complete */
-static unsigned long script_reselection[4]; /* script for reselection (NOT USED) */
-static unsigned long script_error[2]; /* script for error handling */
-
-static unsigned long int_stat[3]; /* interrupt status */
-static unsigned long scsi_mem_addr; /* base memory address =SCSI_MEM_ADDRESS; */
-
-#define bus_to_phys(a)	pci_mem_to_phys(busdevfunc, (unsigned long) (a))
-#define phys_to_bus(a)	pci_phys_to_mem(busdevfunc, (unsigned long) (a))
-
-#define SCSI_MAX_RETRY 3 /* number of retries in scsi_issue() */
-
-#define SCSI_MAX_RETRY_NOT_READY 10 /* number of retries when device is not ready */
-#define SCSI_NOT_READY_TIME_OUT 500 /* timeout per retry when not ready */
-
-/*********************************************************************************
- * forward declerations
- */
-
-void scsi_chip_init(void);
-void handle_scsi_int(void);
-
-
-/********************************************************************************
- * reports SCSI errors to the user
- */
-void scsi_print_error (ccb * pccb)
-{
-	int i;
-
-	printf ("SCSI Error: Target %d LUN %d Command %02X\n", pccb->target,
-		pccb->lun, pccb->cmd[0]);
-	printf ("       CCB: ");
-	for (i = 0; i < pccb->cmdlen; i++)
-		printf ("%02X ", pccb->cmd[i]);
-	printf ("(len=%d)\n", pccb->cmdlen);
-	printf ("     Cntrl: ");
-	switch (pccb->contr_stat) {
-	case SIR_COMPLETE:
-		printf ("Complete (no Error)\n");
-		break;
-	case SIR_SEL_ATN_NO_MSG_OUT:
-		printf ("Selected with ATN no MSG out phase\n");
-		break;
-	case SIR_CMD_OUT_ILL_PH:
-		printf ("Command out illegal phase\n");
-		break;
-	case SIR_MSG_RECEIVED:
-		printf ("MSG received Error\n");
-		break;
-	case SIR_DATA_IN_ERR:
-		printf ("Data in Error\n");
-		break;
-	case SIR_DATA_OUT_ERR:
-		printf ("Data out Error\n");
-		break;
-	case SIR_SCRIPT_ERROR:
-		printf ("Script Error\n");
-		break;
-	case SIR_MSG_OUT_NO_CMD:
-		printf ("MSG out no Command phase\n");
-		break;
-	case SIR_MSG_OVER7:
-		printf ("MSG in over 7 bytes\n");
-		break;
-	case INT_ON_FY:
-		printf ("Interrupt on fly\n");
-		break;
-	case SCSI_SEL_TIME_OUT:
-		printf ("SCSI Selection Timeout\n");
-		break;
-	case SCSI_HNS_TIME_OUT:
-		printf ("SCSI Handshake Timeout\n");
-		break;
-	case SCSI_MA_TIME_OUT:
-		printf ("SCSI Phase Error\n");
-		break;
-	case SCSI_UNEXP_DIS:
-		printf ("SCSI unexpected disconnect\n");
-		break;
-	default:
-		printf ("unknown status %lx\n", pccb->contr_stat);
-		break;
-	}
-	printf ("     Sense: SK %x (", pccb->sense_buf[2] & 0x0f);
-	switch (pccb->sense_buf[2] & 0xf) {
-	case SENSE_NO_SENSE:
-		printf ("No Sense)");
-		break;
-	case SENSE_RECOVERED_ERROR:
-		printf ("Recovered Error)");
-		break;
-	case SENSE_NOT_READY:
-		printf ("Not Ready)");
-		break;
-	case SENSE_MEDIUM_ERROR:
-		printf ("Medium Error)");
-		break;
-	case SENSE_HARDWARE_ERROR:
-		printf ("Hardware Error)");
-		break;
-	case SENSE_ILLEGAL_REQUEST:
-		printf ("Illegal request)");
-		break;
-	case SENSE_UNIT_ATTENTION:
-		printf ("Unit Attention)");
-		break;
-	case SENSE_DATA_PROTECT:
-		printf ("Data Protect)");
-		break;
-	case SENSE_BLANK_CHECK:
-		printf ("Blank check)");
-		break;
-	case SENSE_VENDOR_SPECIFIC:
-		printf ("Vendor specific)");
-		break;
-	case SENSE_COPY_ABORTED:
-		printf ("Copy aborted)");
-		break;
-	case SENSE_ABORTED_COMMAND:
-		printf ("Aborted Command)");
-		break;
-	case SENSE_VOLUME_OVERFLOW:
-		printf ("Volume overflow)");
-		break;
-	case SENSE_MISCOMPARE:
-		printf ("Misscompare\n");
-		break;
-	default:
-		printf ("Illegal Sensecode\n");
-		break;
-	}
-	printf (" ASC %x ASCQ %x\n", pccb->sense_buf[12],
-		pccb->sense_buf[13]);
-	printf ("    Status: ");
-	switch (pccb->status) {
-	case S_GOOD:
-		printf ("Good\n");
-		break;
-	case S_CHECK_COND:
-		printf ("Check condition\n");
-		break;
-	case S_COND_MET:
-		printf ("Condition Met\n");
-		break;
-	case S_BUSY:
-		printf ("Busy\n");
-		break;
-	case S_INT:
-		printf ("Intermediate\n");
-		break;
-	case S_INT_COND_MET:
-		printf ("Intermediate condition met\n");
-		break;
-	case S_CONFLICT:
-		printf ("Reservation conflict\n");
-		break;
-	case S_TERMINATED:
-		printf ("Command terminated\n");
-		break;
-	case S_QUEUE_FULL:
-		printf ("Task set full\n");
-		break;
-	default:
-		printf ("unknown: %02X\n", pccb->status);
-		break;
-	}
-
-}
-
-
-/******************************************************************************
- * sets-up the SCSI controller
- * the base memory address is retrieved via the pci_read_config_dword
- */
-void scsi_low_level_init(int busdevfunc)
-{
-	unsigned int cmd;
-	unsigned int addr;
-	unsigned char vec;
-
-	pci_read_config_byte(busdevfunc, PCI_INTERRUPT_LINE, &vec);
-	pci_read_config_dword(busdevfunc, PCI_BASE_ADDRESS_1, &addr);
-
-	addr = bus_to_phys(addr & ~0xf);
-
-	/*
-	 * Enable bus mastering in case this has not been done, yet.
-	 */
-	pci_read_config_dword(busdevfunc, PCI_COMMAND, &cmd);
-	cmd |= PCI_COMMAND_MASTER;
-	pci_write_config_dword(busdevfunc, PCI_COMMAND, cmd);
-
-	scsi_mem_addr = addr;
-
-	scsi_chip_init();
-	scsi_bus_reset();
-}
-
-
-/************************************************************************************
- * Low level Part of SCSI Driver
- */
-
-/*
- * big-endian -> little endian conversion for the script
- */
-unsigned long swap_script(unsigned long val)
-{
-	return ((val >> 24) & 0xff) | ((val >> 8) & 0xff00) |
-		((val << 8) & 0xff0000) | ((val << 24) & 0xff000000);
-}
-
-
-void scsi_write_byte(ulong offset,unsigned char val)
-{
-	out8(scsi_mem_addr+offset,val);
-}
-
-
-unsigned char scsi_read_byte(ulong offset)
-{
-	return(in8(scsi_mem_addr+offset));
-}
-
-
-/********************************************************************************
- * interrupt handler
- */
-void handle_scsi_int(void)
-{
-	unsigned char stat,stat1,stat2;
-	unsigned short sstat;
-	int i;
-#ifdef SCSI_SINGLE_STEP
-	unsigned long tt;
-#endif
-	stat=scsi_read_byte(ISTAT);
-	if((stat & DIP)==DIP) { /* DMA Interrupt pending */
-		stat1=scsi_read_byte(DSTAT);
-#ifdef SCSI_SINGLE_STEP
-		if((stat1 & SSI)==SSI) {
-			tt=in32r(scsi_mem_addr+DSP);
-			if(((tt)>=start_script_select) && ((tt)<start_script_select+len_script_select)) {
-				printf("select %d\n",(tt-start_script_select)>>2);
-				goto end_single;
-			}
-			if(((tt)>=start_script_msgout) && ((tt)<start_script_msgout+len_script_msgout)) {
-				printf("msgout %d\n",(tt-start_script_msgout)>>2);
-				goto end_single;
-			}
-			if(((tt)>=start_script_msgin) && ((tt)<start_script_msgin+len_script_msgin)) {
-				printf("msgin %d\n",(tt-start_script_msgin)>>2);
-				goto end_single;
-			}
-			if(((tt)>=start_script_msg_ext) && ((tt)<start_script_msg_ext+len_script_msg_ext)) {
-				printf("msgin_ext %d\n",(tt-start_script_msg_ext)>>2);
-				goto end_single;
-			}
-			if(((tt)>=start_script_cmd) && ((tt)<start_script_cmd+len_script_cmd)) {
-				printf("cmd %d\n",(tt-start_script_cmd)>>2);
-				goto end_single;
-			}
-			if(((tt)>=start_script_data_in) && ((tt)<start_script_data_in+len_script_data_in)) {
-				printf("data_in %d\n",(tt-start_script_data_in)>>2);
-				goto end_single;
-			}
-			if(((tt)>=start_script_data_out) && ((tt)<start_script_data_out+len_script_data_out)) {
-				printf("data_out %d\n",(tt-start_script_data_out)>>2);
-				goto end_single;
-			}
-			if(((tt)>=start_script_status) && ((tt)<start_script_status+len_script_status)) {
-				printf("status %d\n",(tt-start_script_status)>>2);
-				goto end_single;
-			}
-			if(((tt)>=start_script_complete) && ((tt)<start_script_complete+len_script_complete)) {
-				printf("complete %d\n",(tt-start_script_complete)>>2);
-				goto end_single;
-			}
-			if(((tt)>=start_script_error) && ((tt)<start_script_error+len_script_error)) {
-				printf("error %d\n",(tt-start_script_error)>>2);
-				goto end_single;
-			}
-			if(((tt)>=start_script_reselection) && ((tt)<start_script_reselection+len_script_reselection)) {
-				printf("reselection %d\n",(tt-start_script_reselection)>>2);
-				goto end_single;
-			}
-			printf("sc: %lx\n",tt);
-end_single:
-			stat2=scsi_read_byte(DCNTL);
-			stat2|=STD;
-			scsi_write_byte(DCNTL,stat2);
-		}
-#endif
-		if((stat1 & SIR)==SIR) /* script interrupt */
-		{
-			int_stat[0]=in32(scsi_mem_addr+DSPS);
-		}
-		if((stat1 & DFE)==0) { /* fifo not epmty */
-			scsi_write_byte(CTEST3,CLF); /* Clear DMA FIFO */
-			stat2=scsi_read_byte(STEST3);
-			scsi_write_byte(STEST3,(stat2 | CSF)); /* Clear SCSI FIFO */
-		}
-	}
-	if((stat & SIP)==SIP) {  /* scsi interrupt */
-		sstat = (unsigned short)scsi_read_byte(SIST+1);
-		sstat <<=8;
-		sstat |= (unsigned short)scsi_read_byte(SIST);
-		for(i=0;i<3;i++) {
-			if(int_stat[i]==0)
-				break; /* found an empty int status */
-		}
-		int_stat[i]=SCSI_INT_STATE | sstat;
-		stat1=scsi_read_byte(DSTAT);
-		if((stat1 & DFE)==0) { /* fifo not epmty */
-			scsi_write_byte(CTEST3,CLF); /* Clear DMA FIFO */
-			stat2=scsi_read_byte(STEST3);
-			scsi_write_byte(STEST3,(stat2 | CSF)); /* Clear SCSI FIFO */
-		}
-	}
-	if((stat & INTF)==INTF) { /* interrupt on Fly */
-		scsi_write_byte(ISTAT,stat); /* clear it */
-		for(i=0;i<3;i++) {
-			if(int_stat[i]==0)
-				break; /* found an empty int status */
-		}
-		int_stat[i]=INT_ON_FY;
-	}
-}
-
-void scsi_bus_reset(void)
-{
-	unsigned char t;
-	int i;
-	int end = CONFIG_SYS_SCSI_SPIN_UP_TIME*1000;
-
-	t=scsi_read_byte(SCNTL1);
-	scsi_write_byte(SCNTL1,(t | CRST));
-	udelay(50);
-	scsi_write_byte(SCNTL1,t);
-
-	puts("waiting for devices to spin up");
-	for(i=0;i<end;i++) {
-		udelay(1000); /* give the devices time to spin up */
-		if (i % 1000 == 0)
-			putc('.');
-	}
-	putc('\n');
-	scsi_chip_init(); /* reinit the chip ...*/
-
-}
-
-void scsi_int_enable(void)
-{
-	scsi_write_byte(SIEN,(unsigned char)scsi_int_mask);
-	scsi_write_byte(SIEN+1,(unsigned char)(scsi_int_mask>>8));
-	scsi_write_byte(DIEN,script_int_mask);
-}
-
-void scsi_write_dsp(unsigned long start)
-{
-#ifdef SCSI_SINGLE_STEP
-	unsigned char t;
-#endif
-	out32r(scsi_mem_addr + DSP,start);
-#ifdef SCSI_SINGLE_STEP
-	t=scsi_read_byte(DCNTL);
-  t|=STD;
-	scsi_write_byte(DCNTL,t);
-#endif
-}
-
-/* only used for debug purposes */
-void scsi_print_script(void)
-{
-	printf("script_select @         0x%08lX\n",(unsigned long)&script_select[0]);
-	printf("script_msgout @         0x%08lX\n",(unsigned long)&script_msgout[0]);
-	printf("script_msgin @          0x%08lX\n",(unsigned long)&script_msgin[0]);
-	printf("script_msgext @         0x%08lX\n",(unsigned long)&script_msg_ext[0]);
-	printf("script_cmd @            0x%08lX\n",(unsigned long)&script_cmd[0]);
-	printf("script_data_in @        0x%08lX\n",(unsigned long)&script_data_in[0]);
-	printf("script_data_out @       0x%08lX\n",(unsigned long)&script_data_out[0]);
-	printf("script_status @         0x%08lX\n",(unsigned long)&script_status[0]);
-	printf("script_complete @       0x%08lX\n",(unsigned long)&script_complete[0]);
-	printf("script_error @          0x%08lX\n",(unsigned long)&script_error[0]);
-}
-
-
-void scsi_set_script(ccb *pccb)
-{
-	int busdevfunc = pccb->priv;
-	int i;
-	i=0;
-	script_select[i++]=swap_script(SCR_REG_REG(GPREG, SCR_AND, 0xfe));
-	script_select[i++]=0; /* LED ON */
-	script_select[i++]=swap_script(SCR_CLR(SCR_TRG)); /* select initiator mode */
-	script_select[i++]=0;
-	/* script_select[i++]=swap_script(SCR_SEL_ABS_ATN | pccb->target << 16); */
-	script_select[i++]=swap_script(SCR_SEL_ABS | pccb->target << 16);
-	script_select[i++]=swap_script(phys_to_bus(&script_cmd[4])); /* error handling */
-	script_select[i++]=swap_script(SCR_JUMP); /* next section */
-	/*	script_select[i++]=swap_script((unsigned long)&script_msgout[0]); */ /* message out */
-	script_select[i++]=swap_script(phys_to_bus(&script_cmd[0])); /* command out */
-
-#ifdef SCSI_SINGLE_STEP
-	start_script_select=(unsigned long)&script_select[0];
-	len_script_select=i*4;
-#endif
-
-	i=0;
-	script_msgout[i++]=swap_script(SCR_INT ^ IFFALSE (WHEN (SCR_MSG_OUT)));
-	script_msgout[i++]=SIR_SEL_ATN_NO_MSG_OUT;
-	script_msgout[i++]=swap_script(	SCR_MOVE_ABS(1) ^ SCR_MSG_OUT);
-	script_msgout[i++]=swap_script(phys_to_bus(&pccb->msgout[0]));
-	script_msgout[i++]=swap_script(SCR_JUMP ^ IFTRUE (WHEN (SCR_COMMAND))); /* if Command phase */
-	script_msgout[i++]=swap_script(phys_to_bus(&script_cmd[0])); /* switch to command */
-	script_msgout[i++]=swap_script(SCR_INT); /* interrupt if not */
-	script_msgout[i++]=SIR_MSG_OUT_NO_CMD;
-
-#ifdef SCSI_SINGLE_STEP
-	start_script_msgout=(unsigned long)&script_msgout[0];
-	len_script_msgout=i*4;
-#endif
-	i=0;
-	script_cmd[i++]=swap_script(SCR_MOVE_ABS(pccb->cmdlen) ^ SCR_COMMAND);
-	script_cmd[i++]=swap_script(phys_to_bus(&pccb->cmd[0]));
-	script_cmd[i++]=swap_script(SCR_JUMP ^ IFTRUE (WHEN (SCR_MSG_IN))); /* message in ? */
-	script_cmd[i++]=swap_script(phys_to_bus(&script_msgin[0]));
-	script_cmd[i++]=swap_script(SCR_JUMP ^ IFTRUE (IF (SCR_DATA_OUT))); /* data out ? */
-	script_cmd[i++]=swap_script(phys_to_bus(&script_data_out[0]));
-	script_cmd[i++]=swap_script(SCR_JUMP ^ IFTRUE (IF (SCR_DATA_IN))); /* data in ? */
-	script_cmd[i++]=swap_script(phys_to_bus(&script_data_in[0]));
-	script_cmd[i++]=swap_script(SCR_JUMP ^ IFTRUE (IF (SCR_STATUS)));  /* status ? */
-	script_cmd[i++]=swap_script(phys_to_bus(&script_status[0]));
-	script_cmd[i++]=swap_script(SCR_JUMP ^ IFTRUE (IF (SCR_COMMAND)));  /* command ? */
-	script_cmd[i++]=swap_script(phys_to_bus(&script_cmd[0]));
-	script_cmd[i++]=swap_script(SCR_JUMP ^ IFTRUE (IF (SCR_MSG_OUT)));  /* message out ? */
-	script_cmd[i++]=swap_script(phys_to_bus(&script_msgout[0]));
-	script_cmd[i++]=swap_script(SCR_JUMP ^ IFTRUE (IF (SCR_MSG_IN))); /* just for error handling message in ? */
-	script_cmd[i++]=swap_script(phys_to_bus(&script_msgin[0]));
-	script_cmd[i++]=swap_script(SCR_INT); /* interrupt if not */
-	script_cmd[i++]=SIR_CMD_OUT_ILL_PH;
-#ifdef SCSI_SINGLE_STEP
-	start_script_cmd=(unsigned long)&script_cmd[0];
-	len_script_cmd=i*4;
-#endif
-	i=0;
-	script_data_out[i++]=swap_script(SCR_MOVE_ABS(pccb->datalen)^ SCR_DATA_OUT); /* move */
-	script_data_out[i++]=swap_script(phys_to_bus(pccb->pdata)); /* pointer to buffer */
-	script_data_out[i++]=swap_script(SCR_JUMP ^ IFTRUE (WHEN (SCR_STATUS)));
-	script_data_out[i++]=swap_script(phys_to_bus(&script_status[0]));
-	script_data_out[i++]=swap_script(SCR_INT);
-	script_data_out[i++]=SIR_DATA_OUT_ERR;
-
-#ifdef SCSI_SINGLE_STEP
-	start_script_data_out=(unsigned long)&script_data_out[0];
-	len_script_data_out=i*4;
-#endif
-	i=0;
-	script_data_in[i++]=swap_script(SCR_MOVE_ABS(pccb->datalen)^ SCR_DATA_IN); /* move  */
-	script_data_in[i++]=swap_script(phys_to_bus(pccb->pdata)); /* pointer to buffer */
-	script_data_in[i++]=swap_script(SCR_JUMP ^ IFTRUE (WHEN (SCR_STATUS)));
-	script_data_in[i++]=swap_script(phys_to_bus(&script_status[0]));
-	script_data_in[i++]=swap_script(SCR_INT);
-	script_data_in[i++]=SIR_DATA_IN_ERR;
-#ifdef SCSI_SINGLE_STEP
-	start_script_data_in=(unsigned long)&script_data_in[0];
-	len_script_data_in=i*4;
-#endif
-	i=0;
-	script_msgin[i++]=swap_script(SCR_MOVE_ABS (1) ^ SCR_MSG_IN);
-	script_msgin[i++]=swap_script(phys_to_bus(&pccb->msgin[0]));
-	script_msgin[i++]=swap_script(SCR_JUMP ^ IFTRUE (DATA (M_COMPLETE)));
-	script_msgin[i++]=swap_script(phys_to_bus(&script_complete[0]));
-	script_msgin[i++]=swap_script(SCR_JUMP ^ IFTRUE (DATA (M_DISCONNECT)));
-	script_msgin[i++]=swap_script(phys_to_bus(&script_complete[0]));
-	script_msgin[i++]=swap_script(SCR_JUMP ^ IFTRUE (DATA (M_SAVE_DP)));
-	script_msgin[i++]=swap_script(phys_to_bus(&script_complete[0]));
-	script_msgin[i++]=swap_script(SCR_JUMP ^ IFTRUE (DATA (M_RESTORE_DP)));
-	script_msgin[i++]=swap_script(phys_to_bus(&script_complete[0]));
-	script_msgin[i++]=swap_script(SCR_JUMP ^ IFTRUE (DATA (M_EXTENDED)));
-	script_msgin[i++]=swap_script(phys_to_bus(&script_msg_ext[0]));
-	script_msgin[i++]=swap_script(SCR_INT);
-	script_msgin[i++]=SIR_MSG_RECEIVED;
-#ifdef SCSI_SINGLE_STEP
-	start_script_msgin=(unsigned long)&script_msgin[0];
-	len_script_msgin=i*4;
-#endif
-	i=0;
-	script_msg_ext[i++]=swap_script(SCR_CLR (SCR_ACK)); /* clear ACK */
-	script_msg_ext[i++]=0;
-	script_msg_ext[i++]=swap_script(SCR_MOVE_ABS (1) ^ SCR_MSG_IN); /* assuming this is the msg length */
-	script_msg_ext[i++]=swap_script(phys_to_bus(&pccb->msgin[1]));
-	script_msg_ext[i++]=swap_script(SCR_JUMP ^ IFFALSE (IF (SCR_MSG_IN)));
-	script_msg_ext[i++]=swap_script(phys_to_bus(&script_complete[0])); /* no more bytes */
-	script_msg_ext[i++]=swap_script(SCR_MOVE_ABS (1) ^ SCR_MSG_IN); /* next */
-	script_msg_ext[i++]=swap_script(phys_to_bus(&pccb->msgin[2]));
-	script_msg_ext[i++]=swap_script(SCR_JUMP ^ IFFALSE (IF (SCR_MSG_IN)));
-	script_msg_ext[i++]=swap_script(phys_to_bus(&script_complete[0])); /* no more bytes */
-	script_msg_ext[i++]=swap_script(SCR_MOVE_ABS (1) ^ SCR_MSG_IN); /* next */
-	script_msg_ext[i++]=swap_script(phys_to_bus(&pccb->msgin[3]));
-	script_msg_ext[i++]=swap_script(SCR_JUMP ^ IFFALSE (IF (SCR_MSG_IN)));
-	script_msg_ext[i++]=swap_script(phys_to_bus(&script_complete[0])); /* no more bytes */
-	script_msg_ext[i++]=swap_script(SCR_MOVE_ABS (1) ^ SCR_MSG_IN); /* next */
-	script_msg_ext[i++]=swap_script(phys_to_bus(&pccb->msgin[4]));
-	script_msg_ext[i++]=swap_script(SCR_JUMP ^ IFFALSE (IF (SCR_MSG_IN)));
-	script_msg_ext[i++]=swap_script(phys_to_bus(&script_complete[0])); /* no more bytes */
-	script_msg_ext[i++]=swap_script(SCR_MOVE_ABS (1) ^ SCR_MSG_IN); /* next */
-	script_msg_ext[i++]=swap_script(phys_to_bus(&pccb->msgin[5]));
-	script_msg_ext[i++]=swap_script(SCR_JUMP ^ IFFALSE (IF (SCR_MSG_IN)));
-	script_msg_ext[i++]=swap_script(phys_to_bus(&script_complete[0])); /* no more bytes */
-	script_msg_ext[i++]=swap_script(SCR_MOVE_ABS (1) ^ SCR_MSG_IN); /* next */
-	script_msg_ext[i++]=swap_script(phys_to_bus(&pccb->msgin[6]));
-	script_msg_ext[i++]=swap_script(SCR_JUMP ^ IFFALSE (IF (SCR_MSG_IN)));
-	script_msg_ext[i++]=swap_script(phys_to_bus(&script_complete[0])); /* no more bytes */
-	script_msg_ext[i++]=swap_script(SCR_MOVE_ABS (1) ^ SCR_MSG_IN); /* next */
-	script_msg_ext[i++]=swap_script(phys_to_bus(&pccb->msgin[7]));
-	script_msg_ext[i++]=swap_script(SCR_JUMP ^ IFFALSE (IF (SCR_MSG_IN)));
-	script_msg_ext[i++]=swap_script(phys_to_bus(&script_complete[0])); /* no more bytes */
-	script_msg_ext[i++]=swap_script(SCR_INT);
-	script_msg_ext[i++]=SIR_MSG_OVER7;
-#ifdef SCSI_SINGLE_STEP
-	start_script_msg_ext=(unsigned long)&script_msg_ext[0];
-	len_script_msg_ext=i*4;
-#endif
-	i=0;
-	script_status[i++]=swap_script(SCR_MOVE_ABS (1) ^ SCR_STATUS);
-	script_status[i++]=swap_script(phys_to_bus(&pccb->status));
-	script_status[i++]=swap_script(SCR_JUMP ^ IFTRUE (WHEN (SCR_MSG_IN)));
-	script_status[i++]=swap_script(phys_to_bus(&script_msgin[0]));
-	script_status[i++]=swap_script(SCR_INT);
-	script_status[i++]=SIR_STATUS_ILL_PH;
-#ifdef SCSI_SINGLE_STEP
-	start_script_status=(unsigned long)&script_status[0];
-	len_script_status=i*4;
-#endif
-	i=0;
-	script_complete[i++]=swap_script(SCR_REG_REG (SCNTL2, SCR_AND, 0x7f));
-	script_complete[i++]=0;
-	script_complete[i++]=swap_script(SCR_CLR (SCR_ACK|SCR_ATN));
-	script_complete[i++]=0;
-	script_complete[i++]=swap_script(SCR_WAIT_DISC);
-	script_complete[i++]=0;
-	script_complete[i++]=swap_script(SCR_REG_REG(GPREG, SCR_OR, 0x01));
-	script_complete[i++]=0; /* LED OFF */
-	script_complete[i++]=swap_script(SCR_INT);
-	script_complete[i++]=SIR_COMPLETE;
-#ifdef SCSI_SINGLE_STEP
-	start_script_complete=(unsigned long)&script_complete[0];
-	len_script_complete=i*4;
-#endif
-	i=0;
-	script_error[i++]=swap_script(SCR_INT); /* interrupt if error */
-	script_error[i++]=SIR_SCRIPT_ERROR;
-#ifdef SCSI_SINGLE_STEP
-	start_script_error=(unsigned long)&script_error[0];
-	len_script_error=i*4;
-#endif
-	i=0;
-	script_reselection[i++]=swap_script(SCR_CLR (SCR_TRG)); /* target status */
-	script_reselection[i++]=0;
-	script_reselection[i++]=swap_script(SCR_WAIT_RESEL);
-	script_reselection[i++]=swap_script(phys_to_bus(&script_select[0])); /* len = 4 */
-#ifdef SCSI_SINGLE_STEP
-	start_script_reselection=(unsigned long)&script_reselection[0];
-	len_script_reselection=i*4;
-#endif
-}
-
-
-void scsi_issue(ccb *pccb)
-{
-	int busdevfunc = pccb->priv;
-	int i;
-	unsigned short sstat;
-	int retrycnt;  /* retry counter */
-	for(i=0;i<3;i++)
-		int_stat[i]=0; /* delete all int status */
-	/* struct pccb must be set-up correctly */
-	retrycnt=0;
-	PRINTF("ID %d issue cmd %02X\n",pccb->target,pccb->cmd[0]);
-	pccb->trans_bytes=0; /* no bytes transferred yet */
-	scsi_set_script(pccb); /* fill in SCRIPT		*/
-	scsi_int_mask=STO | UDC | MA; /* | CMP; / * Interrupts which are enabled */
-	script_int_mask=0xff; /* enable all Ints */
-	scsi_int_enable();
-	scsi_write_dsp(phys_to_bus(&script_select[0])); /* start script */
-	/* now we have to wait for IRQs */
-retry:
-	/*
-	 * This version of the driver is _not_ interrupt driven,
-	 * but polls the chip's interrupt registers (ISTAT, DSTAT).
-	 */
-	while(int_stat[0]==0)
-		handle_scsi_int();
-
-	if(int_stat[0]==SIR_COMPLETE) {
-		if(pccb->msgin[0]==M_DISCONNECT) {
-			PRINTF("Wait for reselection\n");
-			for(i=0;i<3;i++)
-				int_stat[i]=0; /* delete all int status */
-			scsi_write_dsp(phys_to_bus(&script_reselection[0])); /* start reselection script */
-			goto retry;
-		}
-		pccb->contr_stat=SIR_COMPLETE;
-		return;
-	}
-	if((int_stat[0] & SCSI_INT_STATE)==SCSI_INT_STATE) { /* scsi interrupt */
-		sstat=(unsigned short)int_stat[0];
-		if((sstat & STO)==STO) { /* selection timeout */
-			pccb->contr_stat=SCSI_SEL_TIME_OUT;
-			scsi_write_byte(GPREG,0x01);
-			PRINTF("ID: %X Selection Timeout\n",pccb->target);
-			return;
-		}
-		if((sstat & UDC)==UDC) { /* unexpected disconnect */
-			pccb->contr_stat=SCSI_UNEXP_DIS;
-			scsi_write_byte(GPREG,0x01);
-			PRINTF("ID: %X Unexpected Disconnect\n",pccb->target);
-			return;
-		}
-		if((sstat & RSL)==RSL) { /* reselection */
-			pccb->contr_stat=SCSI_UNEXP_DIS;
-			scsi_write_byte(GPREG,0x01);
-			PRINTF("ID: %X Unexpected Disconnect\n",pccb->target);
-			return;
-		}
-		if(((sstat & MA)==MA)||((sstat & HTH)==HTH)) { /* phase missmatch */
-			if(retrycnt<SCSI_MAX_RETRY) {
-				pccb->trans_bytes=pccb->datalen -
-					((unsigned long)scsi_read_byte(DBC) |
-					((unsigned long)scsi_read_byte(DBC+1)<<8) |
-					((unsigned long)scsi_read_byte(DBC+2)<<16));
-				for(i=0;i<3;i++)
-					int_stat[i]=0; /* delete all int status */
-				retrycnt++;
-				PRINTF("ID: %X Phase Missmatch Retry %d Phase %02X transferred %lx\n",
-						pccb->target,retrycnt,scsi_read_byte(SBCL),pccb->trans_bytes);
-				scsi_write_dsp(phys_to_bus(&script_cmd[4])); /* start retry script */
-				goto retry;
-			}
-			if((sstat & MA)==MA)
-				pccb->contr_stat=SCSI_MA_TIME_OUT;
-			else
-				pccb->contr_stat=SCSI_HNS_TIME_OUT;
-			PRINTF("Phase Missmatch stat %lx\n",pccb->contr_stat);
-			return;
-		} /* no phase int */
-/*		if((sstat & CMP)==CMP) {
-			pccb->contr_stat=SIR_COMPLETE;
-			return;
-		}
-*/
-		PRINTF("SCSI INT %lX\n",int_stat[0]);
-		pccb->contr_stat=int_stat[0];
-		return;
-	} /* end scsi int */
-	PRINTF("SCRIPT INT %lX phase %02X\n",int_stat[0],scsi_read_byte(SBCL));
-	pccb->contr_stat=int_stat[0];
-	return;
-}
-
-int scsi_exec(ccb *pccb)
-{
-	unsigned char tmpcmd[16],tmpstat;
-	int i,retrycnt,t;
-	unsigned long transbytes,datalen;
-	unsigned char *tmpptr;
-	retrycnt=0;
-retry:
-	scsi_issue(pccb);
-	if(pccb->contr_stat!=SIR_COMPLETE)
-		return false;
-	if(pccb->status==S_GOOD)
-		return true;
-	if(pccb->status==S_CHECK_COND) { /* check condition */
-		for(i=0;i<16;i++)
-			tmpcmd[i]=pccb->cmd[i];
-		pccb->cmd[0]=SCSI_REQ_SENSE;
-		pccb->cmd[1]=pccb->lun<<5;
-		pccb->cmd[2]=0;
-		pccb->cmd[3]=0;
-		pccb->cmd[4]=14;
-		pccb->cmd[5]=0;
-		pccb->cmdlen=6;
-		pccb->msgout[0]=SCSI_IDENTIFY;
-		transbytes=pccb->trans_bytes;
-		tmpptr=pccb->pdata;
-		pccb->pdata = &pccb->sense_buf[0];
-		datalen=pccb->datalen;
-		pccb->datalen=14;
-		tmpstat=pccb->status;
-		scsi_issue(pccb);
-		for(i=0;i<16;i++)
-			pccb->cmd[i]=tmpcmd[i];
-		pccb->trans_bytes=transbytes;
-		pccb->pdata=tmpptr;
-		pccb->datalen=datalen;
-		pccb->status=tmpstat;
-		PRINTF("Request_sense sense key %x ASC %x ASCQ %x\n",pccb->sense_buf[2]&0x0f,
-			pccb->sense_buf[12],pccb->sense_buf[13]);
-		switch(pccb->sense_buf[2]&0xf) {
-			case SENSE_NO_SENSE:
-			case SENSE_RECOVERED_ERROR:
-				/* seems to be ok */
-				return true;
-				break;
-			case SENSE_NOT_READY:
-				if((pccb->sense_buf[12]!=0x04)||(pccb->sense_buf[13]!=0x01)) {
-					/* if device is not in process of becoming ready */
-					return false;
-					break;
-				} /* else fall through */
-			case SENSE_UNIT_ATTENTION:
-				if(retrycnt<SCSI_MAX_RETRY_NOT_READY) {
-					PRINTF("Target %d not ready, retry %d\n",pccb->target,retrycnt);
-					for(t=0;t<SCSI_NOT_READY_TIME_OUT;t++)
-						udelay(1000); /* 1sec wait */
-					retrycnt++;
-					goto retry;
-				}
-				PRINTF("Target %d not ready, %d retried\n",pccb->target,retrycnt);
-				return false;
-			default:
-				return false;
-		}
-	}
-	PRINTF("Status = %X\n",pccb->status);
-	return false;
-}
-
-
-void scsi_chip_init(void)
-{
-	/* first we issue a soft reset */
-	scsi_write_byte(ISTAT,SRST);
-	udelay(1000);
-	scsi_write_byte(ISTAT,0);
-	/* setup chip */
-	scsi_write_byte(SCNTL0,0xC0); /* full arbitration no start, no message, parity disabled, master */
-	scsi_write_byte(SCNTL1,0x00);
-	scsi_write_byte(SCNTL2,0x00);
-#ifndef CONFIG_SYS_SCSI_SYM53C8XX_CCF    /* config value for none 40 MHz clocks */
-	scsi_write_byte(SCNTL3,0x13); /* synchronous clock 40/4=10MHz, asynchronous 40MHz */
-#else
-	scsi_write_byte(SCNTL3,CONFIG_SYS_SCSI_SYM53C8XX_CCF); /* config value for none 40 MHz clocks */
-#endif
-	scsi_write_byte(SCID,0x47); /* ID=7, enable reselection */
-	scsi_write_byte(SXFER,0x00); /* synchronous transfer period 10MHz, asynchronous */
-	scsi_write_byte(SDID,0x00);  /* targed SCSI ID = 0 */
-	scsi_int_mask=0x0000; /* no Interrupt is enabled */
-	script_int_mask=0x00;
-	scsi_int_enable();
-	scsi_write_byte(GPREG,0x01); /* GPIO0 is LED (off) */
-	scsi_write_byte(GPCNTL,0x0E); /* GPIO0 is Output */
-	scsi_write_byte(STIME0,0x08); /* handshake timer disabled, selection timeout 512msec */
-	scsi_write_byte(RESPID,0x80); /* repond only to the own ID (reselection) */
-	scsi_write_byte(STEST1,0x00); /* not isolated, SCLK is used */
-	scsi_write_byte(STEST2,0x00); /* no Lowlevel Mode? */
-	scsi_write_byte(STEST3,0x80); /* enable tolerANT */
-	scsi_write_byte(CTEST3,0x04); /* clear FIFO */
-	scsi_write_byte(CTEST4,0x00);
-	scsi_write_byte(CTEST5,0x00);
-#ifdef SCSI_SINGLE_STEP
-/*	scsi_write_byte(DCNTL,IRQM | SSM);	*/
-	scsi_write_byte(DCNTL,IRQD | SSM);
-	scsi_write_byte(DMODE,MAN);
-#else
-/*	scsi_write_byte(DCNTL,IRQM);	*/
-	scsi_write_byte(DCNTL,IRQD);
-	scsi_write_byte(DMODE,0x00);
-#endif
-}
-#endif
diff --git a/include/configs/PIP405.h b/include/configs/PIP405.h
index 1bcf8bb0dc..fe7458de0f 100644
--- a/include/configs/PIP405.h
+++ b/include/configs/PIP405.h
@@ -256,15 +256,6 @@
  ************************************************************/
 #define CONFIG_ATAPI			/* enable ATAPI Support */
 
-/************************************************************
- * SCSI support (experimental) only SYM53C8xx supported
- ************************************************************/
-#define CONFIG_SCSI_SYM53C8XX
-#define CONFIG_SYS_SCSI_MAX_LUN	8	/* number of supported LUNs */
-#define CONFIG_SYS_SCSI_MAX_SCSI_ID	7	/* maximum SCSI ID (0..6) */
-#define CONFIG_SYS_SCSI_MAX_DEVICE	CONFIG_SYS_SCSI_MAX_SCSI_ID * CONFIG_SYS_SCSI_MAX_LUN /* maximum Target devices */
-#define CONFIG_SYS_SCSI_SPIN_UP_TIME	2
-
 /************************************************************
  * Disk-On-Chip configuration
  ************************************************************/
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index ef49525407..e244b20dd0 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -2349,7 +2349,6 @@ CONFIG_SCSI_AHCI
 CONFIG_SCSI_AHCI_PLAT
 CONFIG_SCSI_DEV_ID
 CONFIG_SCSI_DEV_LIST
-CONFIG_SCSI_SYM53C8XX
 CONFIG_SC_TIMER_CLK
 CONFIG_SDCARD
 CONFIG_SDRAM_BANK0
@@ -5550,7 +5549,6 @@ CONFIG_SYS_SCSI_MAX_DEVICE
 CONFIG_SYS_SCSI_MAX_LUN
 CONFIG_SYS_SCSI_MAX_SCSI_ID
 CONFIG_SYS_SCSI_SPIN_UP_TIME
-CONFIG_SYS_SCSI_SYM53C8XX_CCF
 CONFIG_SYS_SDHC_CLK
 CONFIG_SYS_SDHC_CLK_2_PLL
 CONFIG_SYS_SDIO0
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 04/29] scsi: Drop scsi_print_error()
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (2 preceding siblings ...)
  2017-06-05 19:14 ` [U-Boot] [PATCH 03/29] scsi: Drop sym53c8xx driver Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  2:13   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 05/29] Convert CONFIG_CMD_SATA to Kconfig Simon Glass
                   ` (24 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

This function is only defined by one driver and is empty. Move it into
the SCSI implementation itself. We could remove it, but it should be
useful for debugging.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 common/scsi.c                | 5 +++++
 drivers/block/ahci.c         | 5 -----
 drivers/block/sandbox_scsi.c | 4 ----
 include/scsi.h               | 1 -
 4 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/common/scsi.c b/common/scsi.c
index 4896fb9350..6175e50764 100644
--- a/common/scsi.c
+++ b/common/scsi.c
@@ -48,6 +48,11 @@ static struct blk_desc scsi_dev_desc[CONFIG_SYS_SCSI_MAX_DEVICE];
 #define SCSI_MAX_READ_BLK 0xFFFF
 #define SCSI_LBA48_READ	0xFFFFFFF
 
+static void scsi_print_error(ccb *pccb)
+{
+	/* Dummy function that could print an error for debugging */
+}
+
 #ifdef CONFIG_SYS_64BIT_LBA
 void scsi_setup_read16(ccb *pccb, lbaint_t start, unsigned long blocks)
 {
diff --git a/drivers/block/ahci.c b/drivers/block/ahci.c
index 3fa14a76b8..f4744718a8 100644
--- a/drivers/block/ahci.c
+++ b/drivers/block/ahci.c
@@ -1092,8 +1092,3 @@ __weak void scsi_bus_reset(void)
 {
 	/*Not implement*/
 }
-
-void scsi_print_error(ccb * pccb)
-{
-	/*The ahci error info can be read in the ahci driver*/
-}
diff --git a/drivers/block/sandbox_scsi.c b/drivers/block/sandbox_scsi.c
index ad961bd225..f4004a350c 100644
--- a/drivers/block/sandbox_scsi.c
+++ b/drivers/block/sandbox_scsi.c
@@ -23,7 +23,3 @@ int scsi_exec(ccb *pccb)
 {
 	return 0;
 }
-
-void scsi_print_error(ccb *pccb)
-{
-}
diff --git a/include/scsi.h b/include/scsi.h
index 190dacd0f2..621d9382fc 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -163,7 +163,6 @@ typedef struct SCSI_cmd_block{
  * decleration of functions which have to reside in the LowLevel Part Driver
  */
 
-void scsi_print_error(ccb *pccb);
 int scsi_exec(ccb *pccb);
 void scsi_bus_reset(void);
 #if !defined(CONFIG_DM_SCSI)
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 05/29] Convert CONFIG_CMD_SATA to Kconfig
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (3 preceding siblings ...)
  2017-06-05 19:14 ` [U-Boot] [PATCH 04/29] scsi: Drop scsi_print_error() Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  2:13   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 06/29] Kconfig: Add CONFIG_SATA to enable SATA Simon Glass
                   ` (23 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

This converts the following to Kconfig:
   CONFIG_CMD_SATA

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/Kconfig                                       |  1 +
 arch/arm/cpu/armv7/mx6/Kconfig                     |  4 ++
 arch/arm/mach-mvebu/Kconfig                        |  2 +
 arch/powerpc/cpu/mpc83xx/Kconfig                   |  1 +
 arch/powerpc/cpu/mpc85xx/Kconfig                   | 45 ++++++++++++++++++++++
 cmd/Kconfig                                        | 12 ++++++
 configs/MPC8315ERDB_defconfig                      |  1 +
 configs/MPC8349ITX_LOWBOOT_defconfig               |  1 +
 configs/MPC8349ITX_defconfig                       |  1 +
 configs/MPC837XERDB_defconfig                      |  1 +
 configs/canyonlands_defconfig                      |  1 +
 configs/cgtqmx6eval_defconfig                      |  1 +
 configs/cm_fx6_defconfig                           |  1 +
 .../controlcenterd_36BIT_SDCARD_DEVELOP_defconfig  |  1 +
 configs/controlcenterd_36BIT_SDCARD_defconfig      |  1 +
 configs/db-mv784mp-gp_defconfig                    |  1 +
 configs/m53evk_defconfig                           |  1 +
 configs/mx53loco_defconfig                         |  1 +
 configs/mx6qsabrelite_defconfig                    |  1 +
 configs/nitrogen6q2g_defconfig                     |  1 +
 configs/nitrogen6q_defconfig                       |  1 +
 configs/novena_defconfig                           |  1 +
 configs/tbs2910_defconfig                          |  1 +
 configs/udoo_defconfig                             |  1 +
 configs/wandboard_defconfig                        |  1 +
 include/configs/MPC8315ERDB.h                      |  1 -
 include/configs/MPC8349ITX.h                       |  4 --
 include/configs/MPC837XEMDS.h                      |  1 -
 include/configs/MPC837XERDB.h                      |  1 -
 include/configs/MPC8536DS.h                        |  1 -
 include/configs/P1010RDB.h                         |  1 -
 include/configs/P1022DS.h                          |  1 -
 include/configs/P2041RDB.h                         |  1 -
 include/configs/P4080DS.h                          |  1 -
 include/configs/T102xQDS.h                         |  1 -
 include/configs/T1040QDS.h                         |  1 -
 include/configs/T104xRDB.h                         |  1 -
 include/configs/T208xQDS.h                         |  1 -
 include/configs/T208xRDB.h                         |  1 -
 include/configs/T4240QDS.h                         |  1 -
 include/configs/T4240RDB.h                         |  2 -
 include/configs/UCP1020.h                          |  1 -
 include/configs/advantech_dms-ba16.h               |  1 -
 include/configs/apalis_imx6.h                      |  4 --
 include/configs/canyonlands.h                      |  1 -
 include/configs/cgtqmx6eval.h                      |  1 -
 include/configs/cm_fx6.h                           |  1 -
 include/configs/controlcenterd.h                   |  1 -
 include/configs/corenet_ds.h                       |  1 -
 include/configs/cyrus.h                            |  1 -
 include/configs/db-mv784mp-gp.h                    |  1 -
 include/configs/gw_ventana.h                       |  1 -
 include/configs/m53evk.h                           |  1 -
 include/configs/mx53loco.h                         |  1 -
 include/configs/nitrogen6x.h                       |  4 --
 include/configs/novena.h                           |  1 -
 include/configs/ot1200.h                           |  4 --
 include/configs/p1_p2_rdb_pc.h                     |  1 -
 include/configs/p1_twr.h                           |  1 -
 include/configs/sandbox.h                          |  1 -
 include/configs/t4qds.h                            |  1 -
 include/configs/tbs2910.h                          |  1 -
 include/configs/theadorable.h                      |  1 -
 include/configs/udoo.h                             |  1 -
 include/configs/wandboard.h                        |  1 -
 scripts/config_whitelist.txt                       |  1 -
 66 files changed, 84 insertions(+), 54 deletions(-)

diff --git a/arch/Kconfig b/arch/Kconfig
index 1f874a3e32..6c538f4d5a 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -80,6 +80,7 @@ config SANDBOX
 	imply HASH_VERIFY
 	imply LZMA
 	imply SCSI
+	imply CMD_SATA
 
 config SH
 	bool "SuperH architecture"
diff --git a/arch/arm/cpu/armv7/mx6/Kconfig b/arch/arm/cpu/armv7/mx6/Kconfig
index 4fd60d480e..1e5dc9afd9 100644
--- a/arch/arm/cpu/armv7/mx6/Kconfig
+++ b/arch/arm/cpu/armv7/mx6/Kconfig
@@ -77,6 +77,7 @@ config TARGET_ADVANTECH_DMS_BA16
 	bool "Advantech dms-ba16"
 	select BOARD_LATE_INIT
 	select MX6Q
+	imply CMD_SATA
 
 config TARGET_APALIS_IMX6
 	bool "Toradex Apalis iMX6 board"
@@ -85,6 +86,7 @@ config TARGET_APALIS_IMX6
 	select DM
 	select DM_SERIAL
 	select DM_THERMAL
+	imply CMD_SATA
 
 config TARGET_ARISTAINETOS
 	bool "aristainetos"
@@ -141,6 +143,7 @@ config TARGET_GE_B850V3
 config TARGET_GW_VENTANA
 	bool "gw_ventana"
 	select SUPPORT_SPL
+	imply CMD_SATA
 
 config TARGET_KOSAGI_NOVENA
 	bool "Kosagi Novena"
@@ -302,6 +305,7 @@ config TARGET_OPOS6ULDEV
 config TARGET_OT1200
 	bool "Bachmann OT1200"
 	select SUPPORT_SPL
+	imply CMD_SATA
 
 config TARGET_PICO_IMX6UL
 	bool "PICO-IMX6UL-EMMC"
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index 89476a663a..3e48d58fcc 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -57,6 +57,7 @@ config MV78230
 config MV78260
 	bool
 	select ARMADA_XP
+	imply CMD_SATA
 
 config MV78460
 	bool
@@ -113,6 +114,7 @@ config TARGET_THEADORABLE
 	bool "Support theadorable Armada XP"
 	select BOARD_LATE_INIT if USB
 	select MV78260
+	imply CMD_SATA
 
 config TARGET_CONTROLCENTERDC
 	bool "Support CONTROLCENTERDC"
diff --git a/arch/powerpc/cpu/mpc83xx/Kconfig b/arch/powerpc/cpu/mpc83xx/Kconfig
index 0772b7c4fb..cdd21a253a 100644
--- a/arch/powerpc/cpu/mpc83xx/Kconfig
+++ b/arch/powerpc/cpu/mpc83xx/Kconfig
@@ -54,6 +54,7 @@ config TARGET_MPC8349ITX
 config TARGET_MPC837XEMDS
 	bool "Support MPC837XEMDS"
 	select BOARD_EARLY_INIT_F
+	imply CMD_SATA
 
 config TARGET_MPC837XERDB
 	bool "Support MPC837XERDB"
diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig
index cbbb19f06d..8d9e585ff2 100644
--- a/arch/powerpc/cpu/mpc85xx/Kconfig
+++ b/arch/powerpc/cpu/mpc85xx/Kconfig
@@ -63,30 +63,35 @@ config TARGET_P3041DS
 	select PHYS_64BIT
 	select ARCH_P3041
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
+	imply CMD_SATA
 
 config TARGET_P4080DS
 	bool "Support P4080DS"
 	select PHYS_64BIT
 	select ARCH_P4080
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
+	imply CMD_SATA
 
 config TARGET_P5020DS
 	bool "Support P5020DS"
 	select PHYS_64BIT
 	select ARCH_P5020
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
+	imply CMD_SATA
 
 config TARGET_P5040DS
 	bool "Support P5040DS"
 	select PHYS_64BIT
 	select ARCH_P5040
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
+	imply CMD_SATA
 
 config TARGET_MPC8536DS
 	bool "Support MPC8536DS"
 	select ARCH_MPC8536
 # Use DDR3 controller with DDR2 DIMMs on this board
 	select SYS_FSL_DDRC_GEN3
+	imply CMD_SATA
 
 config TARGET_MPC8540ADS
 	bool "Support MPC8540ADS"
@@ -134,6 +139,7 @@ config TARGET_P1010RDB_PA
 	select SUPPORT_SPL
 	select SUPPORT_TPL
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_P1010RDB_PB
 	bool "Support P1010RDB_PB"
@@ -142,12 +148,14 @@ config TARGET_P1010RDB_PB
 	select SUPPORT_SPL
 	select SUPPORT_TPL
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_P1022DS
 	bool "Support P1022DS"
 	select ARCH_P1022
 	select SUPPORT_SPL
 	select SUPPORT_TPL
+	imply CMD_SATA
 
 config TARGET_P1023RDB
 	bool "Support P1023RDB"
@@ -160,6 +168,7 @@ config TARGET_P1020MBG
 	select SUPPORT_TPL
 	select ARCH_P1020
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_P1020RDB_PC
 	bool "Support P1020RDB-PC"
@@ -167,6 +176,7 @@ config TARGET_P1020RDB_PC
 	select SUPPORT_TPL
 	select ARCH_P1020
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_P1020RDB_PD
 	bool "Support P1020RDB-PD"
@@ -174,6 +184,7 @@ config TARGET_P1020RDB_PD
 	select SUPPORT_TPL
 	select ARCH_P1020
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_P1020UTM
 	bool "Support P1020UTM"
@@ -181,6 +192,7 @@ config TARGET_P1020UTM
 	select SUPPORT_TPL
 	select ARCH_P1020
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_P1021RDB
 	bool "Support P1021RDB"
@@ -188,6 +200,7 @@ config TARGET_P1021RDB
 	select SUPPORT_TPL
 	select ARCH_P1021
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_P1024RDB
 	bool "Support P1024RDB"
@@ -195,6 +208,7 @@ config TARGET_P1024RDB
 	select SUPPORT_TPL
 	select ARCH_P1024
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_P1025RDB
 	bool "Support P1025RDB"
@@ -202,6 +216,7 @@ config TARGET_P1025RDB
 	select SUPPORT_TPL
 	select ARCH_P1025
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_P2020RDB
 	bool "Support P2020RDB-PC"
@@ -209,6 +224,7 @@ config TARGET_P2020RDB
 	select SUPPORT_TPL
 	select ARCH_P2020
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_P1_TWR
 	bool "Support p1_twr"
@@ -219,6 +235,7 @@ config TARGET_P2041RDB
 	select ARCH_P2041
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_QEMU_PPCE500
 	bool "Support qemu-ppce500"
@@ -232,6 +249,7 @@ config TARGET_T1024QDS
 	select SUPPORT_SPL
 	select PHYS_64BIT
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_T1023RDB
 	bool "Support T1023RDB"
@@ -255,6 +273,7 @@ config TARGET_T1040QDS
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select PHYS_64BIT
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config TARGET_T1040RDB
 	bool "Support T1040RDB"
@@ -262,6 +281,7 @@ config TARGET_T1040RDB
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select SUPPORT_SPL
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_T1040D4RDB
 	bool "Support T1040D4RDB"
@@ -269,6 +289,7 @@ config TARGET_T1040D4RDB
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select SUPPORT_SPL
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_T1042RDB
 	bool "Support T1042RDB"
@@ -276,6 +297,7 @@ config TARGET_T1042RDB
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select SUPPORT_SPL
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_T1042D4RDB
 	bool "Support T1042D4RDB"
@@ -283,6 +305,7 @@ config TARGET_T1042D4RDB
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select SUPPORT_SPL
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_T1042RDB_PI
 	bool "Support T1042RDB_PI"
@@ -290,6 +313,7 @@ config TARGET_T1042RDB_PI
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select SUPPORT_SPL
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_T2080QDS
 	bool "Support T2080QDS"
@@ -297,6 +321,7 @@ config TARGET_T2080QDS
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select SUPPORT_SPL
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_T2080RDB
 	bool "Support T2080RDB"
@@ -304,6 +329,7 @@ config TARGET_T2080RDB
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select SUPPORT_SPL
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_T2081QDS
 	bool "Support T2081QDS"
@@ -317,6 +343,7 @@ config TARGET_T4160QDS
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select SUPPORT_SPL
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_T4160RDB
 	bool "Support T4160RDB"
@@ -330,12 +357,14 @@ config TARGET_T4240QDS
 	select BOARD_LATE_INIT if CHAIN_OF_TRUST
 	select SUPPORT_SPL
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_T4240RDB
 	bool "Support T4240RDB"
 	select ARCH_T4240
 	select SUPPORT_SPL
 	select PHYS_64BIT
+	imply CMD_SATA
 
 config TARGET_CONTROLCENTERD
 	bool "Support controlcenterd"
@@ -365,6 +394,7 @@ config TARGET_XPEDITE550X
 config TARGET_UCP1020
 	bool "Support uCP1020"
 	select ARCH_P1020
+	imply CMD_SATA
 
 config TARGET_CYRUS_P5020
 	bool "Support Varisys Cyrus P5020"
@@ -486,6 +516,7 @@ config ARCH_MPC8536
 	select SYS_FSL_SEC_COMPAT_2
 	select SYS_PPC_E500_USE_DEBUG_TLB
 	select FSL_ELBC
+	imply CMD_SATA
 
 config ARCH_MPC8540
 	bool
@@ -594,6 +625,7 @@ config ARCH_P1010
 	select SYS_PPC_E500_USE_DEBUG_TLB
 	select FSL_IFC
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config ARCH_P1011
 	bool
@@ -622,6 +654,7 @@ config ARCH_P1020
 	select SYS_FSL_SEC_COMPAT_2
 	select SYS_PPC_E500_USE_DEBUG_TLB
 	select FSL_ELBC
+	imply CMD_SATA
 
 config ARCH_P1021
 	bool
@@ -636,6 +669,7 @@ config ARCH_P1021
 	select SYS_FSL_SEC_COMPAT_2
 	select SYS_PPC_E500_USE_DEBUG_TLB
 	select FSL_ELBC
+	imply CMD_SATA
 
 config ARCH_P1022
 	bool
@@ -679,6 +713,7 @@ config ARCH_P1024
 	select SYS_PPC_E500_USE_DEBUG_TLB
 	select FSL_ELBC
 	imply CMD_EEPROM
+	imply CMD_SATA
 
 config ARCH_P1025
 	bool
@@ -693,6 +728,7 @@ config ARCH_P1025
 	select SYS_FSL_SEC_COMPAT_2
 	select SYS_PPC_E500_USE_DEBUG_TLB
 	select FSL_ELBC
+	imply CMD_SATA
 
 config ARCH_P2020
 	bool
@@ -755,6 +791,7 @@ config ARCH_P3041
 	select SYS_FSL_SEC_BE
 	select SYS_FSL_SEC_COMPAT_4
 	select FSL_ELBC
+	imply CMD_SATA
 
 config ARCH_P4080
 	bool
@@ -790,6 +827,7 @@ config ARCH_P4080
 	select SYS_FSL_SEC_BE
 	select SYS_FSL_SEC_COMPAT_4
 	select FSL_ELBC
+	imply CMD_SATA
 
 config ARCH_P5020
 	bool
@@ -811,6 +849,7 @@ config ARCH_P5020
 	select SYS_FSL_SEC_COMPAT_4
 	select SYS_PPC64
 	select FSL_ELBC
+	imply CMD_SATA
 
 config ARCH_P5040
 	bool
@@ -832,6 +871,7 @@ config ARCH_P5040
 	select SYS_FSL_SEC_COMPAT_4
 	select SYS_PPC64
 	select FSL_ELBC
+	imply CMD_SATA
 
 config ARCH_QEMU_E500
 	bool
@@ -889,6 +929,7 @@ config ARCH_T1040
 	select SYS_FSL_SEC_BE
 	select SYS_FSL_SEC_COMPAT_5
 	select FSL_IFC
+	imply CMD_SATA
 
 config ARCH_T1042
 	bool
@@ -907,6 +948,7 @@ config ARCH_T1042
 	select SYS_FSL_SEC_BE
 	select SYS_FSL_SEC_COMPAT_5
 	select FSL_IFC
+	imply CMD_SATA
 
 config ARCH_T2080
 	bool
@@ -929,6 +971,7 @@ config ARCH_T2080
 	select SYS_FSL_SEC_COMPAT_4
 	select SYS_PPC64
 	select FSL_IFC
+	imply CMD_SATA
 
 config ARCH_T2081
 	bool
@@ -970,6 +1013,7 @@ config ARCH_T4160
 	select SYS_FSL_SEC_COMPAT_4
 	select SYS_PPC64
 	select FSL_IFC
+	imply CMD_SATA
 
 config ARCH_T4240
 	bool
@@ -994,6 +1038,7 @@ config ARCH_T4240
 	select SYS_FSL_SEC_COMPAT_4
 	select SYS_PPC64
 	select FSL_IFC
+	imply CMD_SATA
 
 config BOOKE
 	bool
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 270cff6297..022eea8f2d 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -732,6 +732,18 @@ config CMD_FDC
 	help
 	  The 'fdtboot' command allows booting an image from a floppy disk.
 
+config CMD_SATA
+	bool "sata - Access SATA subsystem"
+	help
+	  SATA (Serial Advanced Technology Attachment) is a serial bus
+	  standard for connecting to hard drives and other storage devices.
+	  This command provides information about attached devices and allows
+	  reading, writing and other operations.
+
+	  SATA replaces PATA (originally just ATA), which stands for Parallel AT
+	  Attachment, where AT refers to an IBM AT (Advanced Technology)
+	  computer released in 1984.
+
 endmenu
 
 
diff --git a/configs/MPC8315ERDB_defconfig b/configs/MPC8315ERDB_defconfig
index 38417e7964..32b88fc9d5 100644
--- a/configs/MPC8315ERDB_defconfig
+++ b/configs/MPC8315ERDB_defconfig
@@ -7,6 +7,7 @@ CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_SATA=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
diff --git a/configs/MPC8349ITX_LOWBOOT_defconfig b/configs/MPC8349ITX_LOWBOOT_defconfig
index 9cec452cd5..c7f093eaa7 100644
--- a/configs/MPC8349ITX_LOWBOOT_defconfig
+++ b/configs/MPC8349ITX_LOWBOOT_defconfig
@@ -10,6 +10,7 @@ CONFIG_SYS_PROMPT="MPC8349E-mITX> "
 CONFIG_CMD_IDE=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_SATA=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
diff --git a/configs/MPC8349ITX_defconfig b/configs/MPC8349ITX_defconfig
index 9145ada7c7..e508b3d388 100644
--- a/configs/MPC8349ITX_defconfig
+++ b/configs/MPC8349ITX_defconfig
@@ -10,6 +10,7 @@ CONFIG_SYS_PROMPT="MPC8349E-mITX> "
 CONFIG_CMD_IDE=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_SATA=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
diff --git a/configs/MPC837XERDB_defconfig b/configs/MPC837XERDB_defconfig
index 2f3e7b0162..fc21671ce7 100644
--- a/configs/MPC837XERDB_defconfig
+++ b/configs/MPC837XERDB_defconfig
@@ -8,6 +8,7 @@ CONFIG_HUSH_PARSER=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_SATA=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
diff --git a/configs/canyonlands_defconfig b/configs/canyonlands_defconfig
index 2b59fd329b..712bca1fa7 100644
--- a/configs/canyonlands_defconfig
+++ b/configs/canyonlands_defconfig
@@ -16,6 +16,7 @@ CONFIG_CMD_EEPROM=y
 CONFIG_LOOPW=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
diff --git a/configs/cgtqmx6eval_defconfig b/configs/cgtqmx6eval_defconfig
index 77dd227f00..94d7e76b18 100644
--- a/configs/cgtqmx6eval_defconfig
+++ b/configs/cgtqmx6eval_defconfig
@@ -33,6 +33,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_DFU=y
 CONFIG_CMD_USB_MASS_STORAGE=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_SATA=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
diff --git a/configs/cm_fx6_defconfig b/configs/cm_fx6_defconfig
index dc587a6d59..a548d8f846 100644
--- a/configs/cm_fx6_defconfig
+++ b/configs/cm_fx6_defconfig
@@ -35,6 +35,7 @@ CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
 # CONFIG_CMD_FPGA is not set
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_SATA=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
diff --git a/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig b/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
index cff3f45f38..d05f35d967 100644
--- a/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
+++ b/configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
@@ -22,6 +22,7 @@ CONFIG_CMD_MMC=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
diff --git a/configs/controlcenterd_36BIT_SDCARD_defconfig b/configs/controlcenterd_36BIT_SDCARD_defconfig
index f155089349..d2af507054 100644
--- a/configs/controlcenterd_36BIT_SDCARD_defconfig
+++ b/configs/controlcenterd_36BIT_SDCARD_defconfig
@@ -22,6 +22,7 @@ CONFIG_CMD_MMC=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
diff --git a/configs/db-mv784mp-gp_defconfig b/configs/db-mv784mp-gp_defconfig
index 10ef7afa68..a6d9dc6877 100644
--- a/configs/db-mv784mp-gp_defconfig
+++ b/configs/db-mv784mp-gp_defconfig
@@ -20,6 +20,7 @@ CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_SATA=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_TFTPPUT=y
 CONFIG_CMD_DHCP=y
diff --git a/configs/m53evk_defconfig b/configs/m53evk_defconfig
index cc4a74ca52..afcaf58530 100644
--- a/configs/m53evk_defconfig
+++ b/configs/m53evk_defconfig
@@ -24,6 +24,7 @@ CONFIG_CMD_GREPENV=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
diff --git a/configs/mx53loco_defconfig b/configs/mx53loco_defconfig
index 572735616b..6e2f585960 100644
--- a/configs/mx53loco_defconfig
+++ b/configs/mx53loco_defconfig
@@ -14,6 +14,7 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_MMC=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_SATA=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
diff --git a/configs/mx6qsabrelite_defconfig b/configs/mx6qsabrelite_defconfig
index a54279978f..32bd271209 100644
--- a/configs/mx6qsabrelite_defconfig
+++ b/configs/mx6qsabrelite_defconfig
@@ -19,6 +19,7 @@ CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_USB_MASS_STORAGE=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig
index a19d093710..baa509d48e 100644
--- a/configs/nitrogen6q2g_defconfig
+++ b/configs/nitrogen6q2g_defconfig
@@ -19,6 +19,7 @@ CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_USB_MASS_STORAGE=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig
index edf4b6377a..ebfa843061 100644
--- a/configs/nitrogen6q_defconfig
+++ b/configs/nitrogen6q_defconfig
@@ -19,6 +19,7 @@ CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_USB_MASS_STORAGE=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
diff --git a/configs/novena_defconfig b/configs/novena_defconfig
index afacea7e71..3f8b98ebb9 100644
--- a/configs/novena_defconfig
+++ b/configs/novena_defconfig
@@ -28,6 +28,7 @@ CONFIG_CMD_MMC=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 CONFIG_CMD_EXT4_WRITE=y
diff --git a/configs/tbs2910_defconfig b/configs/tbs2910_defconfig
index ac8f9c667c..90a238cacf 100644
--- a/configs/tbs2910_defconfig
+++ b/configs/tbs2910_defconfig
@@ -21,6 +21,7 @@ CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_USB_MASS_STORAGE=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
diff --git a/configs/udoo_defconfig b/configs/udoo_defconfig
index 3bf55058d7..7e52bdc917 100644
--- a/configs/udoo_defconfig
+++ b/configs/udoo_defconfig
@@ -19,6 +19,7 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_MMC=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig
index b4b3283829..95a14cabc7 100644
--- a/configs/wandboard_defconfig
+++ b/configs/wandboard_defconfig
@@ -25,6 +25,7 @@ CONFIG_CMD_MMC=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_DM=y
diff --git a/include/configs/MPC8315ERDB.h b/include/configs/MPC8315ERDB.h
index fbe033afb1..522f12ceec 100644
--- a/include/configs/MPC8315ERDB.h
+++ b/include/configs/MPC8315ERDB.h
@@ -415,7 +415,6 @@
 
 #ifdef CONFIG_FSL_SATA
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 /*
diff --git a/include/configs/MPC8349ITX.h b/include/configs/MPC8349ITX.h
index 46f09d6b60..53e089a82a 100644
--- a/include/configs/MPC8349ITX.h
+++ b/include/configs/MPC8349ITX.h
@@ -485,10 +485,6 @@ boards, we say we have two, but don't display a message if we find only one. */
 	#define CONFIG_SUPPORT_VFAT
 #endif
 
-#ifdef CONFIG_SATA_SIL3114
-	#define CONFIG_CMD_SATA
-#endif
-
 #if defined(CONFIG_SATA_SIL3114) || defined(CONFIG_USB_STORAGE)
 #endif
 
diff --git a/include/configs/MPC837XEMDS.h b/include/configs/MPC837XEMDS.h
index fcced0eb86..459efb560c 100644
--- a/include/configs/MPC837XEMDS.h
+++ b/include/configs/MPC837XEMDS.h
@@ -436,7 +436,6 @@ extern int board_pci_host_broken(void);
 
 #ifdef CONFIG_FSL_SATA
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 /*
diff --git a/include/configs/MPC837XERDB.h b/include/configs/MPC837XERDB.h
index 607b9266d2..7afbc9096f 100644
--- a/include/configs/MPC837XERDB.h
+++ b/include/configs/MPC837XERDB.h
@@ -449,7 +449,6 @@
 
 #ifdef CONFIG_FSL_SATA
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 /*
diff --git a/include/configs/MPC8536DS.h b/include/configs/MPC8536DS.h
index 18b6b4e13e..470bb72fcb 100644
--- a/include/configs/MPC8536DS.h
+++ b/include/configs/MPC8536DS.h
@@ -522,7 +522,6 @@
 
 #ifdef CONFIG_FSL_SATA
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 #if defined(CONFIG_TSEC_ENET)
diff --git a/include/configs/P1010RDB.h b/include/configs/P1010RDB.h
index 220b07040e..0dc062a094 100644
--- a/include/configs/P1010RDB.h
+++ b/include/configs/P1010RDB.h
@@ -657,7 +657,6 @@ extern unsigned long get_sdram_size(void);
 #define CONFIG_SYS_SATA2		CONFIG_SYS_MPC85xx_SATA2_ADDR
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 
-#define CONFIG_CMD_SATA
 #define CONFIG_LBA48
 #endif /* #ifdef CONFIG_FSL_SATA  */
 
diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h
index 3d12c84ce9..2ee6c6442f 100644
--- a/include/configs/P1022DS.h
+++ b/include/configs/P1022DS.h
@@ -497,7 +497,6 @@
 
 #ifdef CONFIG_FSL_SATA
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 #ifdef CONFIG_MMC
diff --git a/include/configs/P2041RDB.h b/include/configs/P2041RDB.h
index b008e3d9e2..967c83c53b 100644
--- a/include/configs/P2041RDB.h
+++ b/include/configs/P2041RDB.h
@@ -548,7 +548,6 @@ unsigned long get_board_sys_clk(unsigned long dummy);
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 #ifdef CONFIG_FMAN_ENET
diff --git a/include/configs/P4080DS.h b/include/configs/P4080DS.h
index a6fa6a8e26..f192181c08 100644
--- a/include/configs/P4080DS.h
+++ b/include/configs/P4080DS.h
@@ -12,7 +12,6 @@
 
 #define CONFIG_PCIE3
 
-#define CONFIG_CMD_SATA
 #define CONFIG_SATA_SIL
 #define CONFIG_SYS_SATA_MAX_DEVICE  2
 #define CONFIG_LIBATA
diff --git a/include/configs/T102xQDS.h b/include/configs/T102xQDS.h
index 2209cfdb96..2e3a8c1184 100644
--- a/include/configs/T102xQDS.h
+++ b/include/configs/T102xQDS.h
@@ -628,7 +628,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_SATA1		CONFIG_SYS_MPC85xx_SATA1_ADDR
 #define CONFIG_SYS_SATA1_FLAGS		FLAGS_DMA
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 /*
diff --git a/include/configs/T1040QDS.h b/include/configs/T1040QDS.h
index 3953145030..86f7880ff1 100644
--- a/include/configs/T1040QDS.h
+++ b/include/configs/T1040QDS.h
@@ -518,7 +518,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 /*
diff --git a/include/configs/T104xRDB.h b/include/configs/T104xRDB.h
index 0035e67544..350dacaa38 100644
--- a/include/configs/T104xRDB.h
+++ b/include/configs/T104xRDB.h
@@ -628,7 +628,6 @@ $(SRCTREE)/board/freescale/t104xrdb/t1042d4_sd_rcw.cfg
 #define CONFIG_SYS_SATA1_FLAGS		FLAGS_DMA
 
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 /*
diff --git a/include/configs/T208xQDS.h b/include/configs/T208xQDS.h
index e792ec5c9d..9edf19081c 100644
--- a/include/configs/T208xQDS.h
+++ b/include/configs/T208xQDS.h
@@ -695,7 +695,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_SATA2		CONFIG_SYS_MPC85xx_SATA2_ADDR
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 /*
diff --git a/include/configs/T208xRDB.h b/include/configs/T208xRDB.h
index fdafeeb38f..0e70aa83ea 100644
--- a/include/configs/T208xRDB.h
+++ b/include/configs/T208xRDB.h
@@ -645,7 +645,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_SATA2		CONFIG_SYS_MPC85xx_SATA2_ADDR
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 /*
diff --git a/include/configs/T4240QDS.h b/include/configs/T4240QDS.h
index dc3ebfa7fa..f69746b4da 100644
--- a/include/configs/T4240QDS.h
+++ b/include/configs/T4240QDS.h
@@ -489,7 +489,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 #ifdef CONFIG_FMAN_ENET
diff --git a/include/configs/T4240RDB.h b/include/configs/T4240RDB.h
index 0d9cdfb510..ed3b0f7202 100644
--- a/include/configs/T4240RDB.h
+++ b/include/configs/T4240RDB.h
@@ -254,7 +254,6 @@
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 #ifdef CONFIG_FMAN_ENET
@@ -671,7 +670,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 #ifdef CONFIG_FMAN_ENET
diff --git a/include/configs/UCP1020.h b/include/configs/UCP1020.h
index b2feccfd39..f21b49c028 100644
--- a/include/configs/UCP1020.h
+++ b/include/configs/UCP1020.h
@@ -118,7 +118,6 @@
 
 #define CONFIG_ENV_OVERWRITE
 
-#define CONFIG_CMD_SATA
 #define CONFIG_SATA_SIL
 #define CONFIG_SYS_SATA_MAX_DEVICE	2
 #define CONFIG_LIBATA
diff --git a/include/configs/advantech_dms-ba16.h b/include/configs/advantech_dms-ba16.h
index f320792cfd..66ee167f96 100644
--- a/include/configs/advantech_dms-ba16.h
+++ b/include/configs/advantech_dms-ba16.h
@@ -39,7 +39,6 @@
 #define CONFIG_MXC_OCOTP
 
 /* SATA Configs */
-#define CONFIG_CMD_SATA
 #define CONFIG_DWC_AHSATA
 #define CONFIG_SYS_SATA_MAX_DEVICE	1
 #define CONFIG_DWC_AHSATA_PORT_ID	0
diff --git a/include/configs/apalis_imx6.h b/include/configs/apalis_imx6.h
index 8be586b51f..b4006a37e0 100644
--- a/include/configs/apalis_imx6.h
+++ b/include/configs/apalis_imx6.h
@@ -67,10 +67,6 @@
 #define CONFIG_SUPPORT_EMMC_BOOT	/* eMMC specific */
 #define CONFIG_BOUNCE_BUFFER
 
-#ifdef CONFIG_MX6Q
-#define CONFIG_CMD_SATA
-#endif
-
 /*
  * SATA Configs
  */
diff --git a/include/configs/canyonlands.h b/include/configs/canyonlands.h
index b495d0645b..7e430f8971 100644
--- a/include/configs/canyonlands.h
+++ b/include/configs/canyonlands.h
@@ -366,7 +366,6 @@
 #elif defined(CONFIG_CANYONLANDS)
 #define CONFIG_CMD_NAND
 #define CONFIG_CMD_PCI
-#define CONFIG_CMD_SATA
 #define CONFIG_CMD_SDRAM
 #elif defined(CONFIG_GLACIER)
 #define CONFIG_CMD_NAND
diff --git a/include/configs/cgtqmx6eval.h b/include/configs/cgtqmx6eval.h
index cad1357f5c..5d797b4403 100644
--- a/include/configs/cgtqmx6eval.h
+++ b/include/configs/cgtqmx6eval.h
@@ -95,7 +95,6 @@
 #define CONFIG_IMX_HDMI
 
 /* SATA */
-#define CONFIG_CMD_SATA
 #define CONFIG_DWC_AHSATA
 #define CONFIG_SYS_SATA_MAX_DEVICE	1
 #define CONFIG_DWC_AHSATA_PORT_ID	0
diff --git a/include/configs/cm_fx6.h b/include/configs/cm_fx6.h
index dd8010cd48..1d9c1650d5 100644
--- a/include/configs/cm_fx6.h
+++ b/include/configs/cm_fx6.h
@@ -224,7 +224,6 @@
 #define CONFIG_SYS_I2C_EEPROM_BUS	2
 
 /* SATA */
-#define CONFIG_CMD_SATA
 #define CONFIG_SYS_SATA_MAX_DEVICE	1
 #define CONFIG_LIBATA
 #define CONFIG_LBA48
diff --git a/include/configs/controlcenterd.h b/include/configs/controlcenterd.h
index 6641408fcb..072650dfae 100644
--- a/include/configs/controlcenterd.h
+++ b/include/configs/controlcenterd.h
@@ -248,7 +248,6 @@
  */
 #define CONFIG_LIBATA
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 
 #define CONFIG_FSL_SATA
 #define CONFIG_SYS_SATA_MAX_DEVICE	2
diff --git a/include/configs/corenet_ds.h b/include/configs/corenet_ds.h
index 7bbe31ceea..92e6ee0033 100644
--- a/include/configs/corenet_ds.h
+++ b/include/configs/corenet_ds.h
@@ -562,7 +562,6 @@
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 #ifdef CONFIG_FMAN_ENET
diff --git a/include/configs/cyrus.h b/include/configs/cyrus.h
index a23da191ab..6079540bc9 100644
--- a/include/configs/cyrus.h
+++ b/include/configs/cyrus.h
@@ -392,7 +392,6 @@
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 #ifdef CONFIG_FMAN_ENET
diff --git a/include/configs/db-mv784mp-gp.h b/include/configs/db-mv784mp-gp.h
index 821aa9dec1..187ead3e4b 100644
--- a/include/configs/db-mv784mp-gp.h
+++ b/include/configs/db-mv784mp-gp.h
@@ -27,7 +27,6 @@
  */
 #define CONFIG_CMD_NAND
 #define CONFIG_CMD_PCI
-#define CONFIG_CMD_SATA
 
 /* I2C */
 #define CONFIG_SYS_I2C
diff --git a/include/configs/gw_ventana.h b/include/configs/gw_ventana.h
index 2227eead62..de08f2c7cc 100644
--- a/include/configs/gw_ventana.h
+++ b/include/configs/gw_ventana.h
@@ -109,7 +109,6 @@
 /*
  * SATA Configs
  */
-#define CONFIG_CMD_SATA
 #ifdef CONFIG_CMD_SATA
   #define CONFIG_DWC_AHSATA
   #define CONFIG_SYS_SATA_MAX_DEVICE	1
diff --git a/include/configs/m53evk.h b/include/configs/m53evk.h
index 51812257e1..a92c228334 100644
--- a/include/configs/m53evk.h
+++ b/include/configs/m53evk.h
@@ -22,7 +22,6 @@
  */
 #define CONFIG_CMD_NAND
 #define CONFIG_CMD_NAND_TRIMFFS
-#define CONFIG_CMD_SATA
 
 /*
  * Memory configurations
diff --git a/include/configs/mx53loco.h b/include/configs/mx53loco.h
index 1b6d868d04..c82e426a61 100644
--- a/include/configs/mx53loco.h
+++ b/include/configs/mx53loco.h
@@ -189,7 +189,6 @@
 #define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 
-#define CONFIG_CMD_SATA
 #ifdef CONFIG_CMD_SATA
 	#define CONFIG_DWC_AHSATA
 	#define CONFIG_SYS_SATA_MAX_DEVICE      1
diff --git a/include/configs/nitrogen6x.h b/include/configs/nitrogen6x.h
index 00b84f757a..576b7b07db 100644
--- a/include/configs/nitrogen6x.h
+++ b/include/configs/nitrogen6x.h
@@ -47,10 +47,6 @@
 #define CONFIG_SYS_FSL_ESDHC_ADDR      0
 #define CONFIG_SYS_FSL_USDHC_NUM       2
 
-#ifdef CONFIG_MX6Q
-#define CONFIG_CMD_SATA
-#endif
-
 /*
  * SATA Configs
  */
diff --git a/include/configs/novena.h b/include/configs/novena.h
index 1f1bf15af7..041159806b 100644
--- a/include/configs/novena.h
+++ b/include/configs/novena.h
@@ -18,7 +18,6 @@
 
 /* U-Boot Commands */
 #define CONFIG_CMD_PCI
-#define CONFIG_CMD_SATA
 
 /* U-Boot general configurations */
 
diff --git a/include/configs/ot1200.h b/include/configs/ot1200.h
index 0582fa3688..7aeae7b1fd 100644
--- a/include/configs/ot1200.h
+++ b/include/configs/ot1200.h
@@ -57,10 +57,6 @@
 #define CONFIG_MXC_USB_PORTSC   (PORT_PTS_UTMI | PORT_PTS_PTW)
 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
 
-#ifdef CONFIG_MX6Q
-#define CONFIG_CMD_SATA
-#endif
-
 /*
  * SATA Configs
  */
diff --git a/include/configs/p1_p2_rdb_pc.h b/include/configs/p1_p2_rdb_pc.h
index 71b4f40921..a72a57c904 100644
--- a/include/configs/p1_p2_rdb_pc.h
+++ b/include/configs/p1_p2_rdb_pc.h
@@ -270,7 +270,6 @@
 #define CONFIG_TSEC_ENET	/* tsec ethernet support */
 #define CONFIG_ENV_OVERWRITE
 
-#define CONFIG_CMD_SATA
 #define CONFIG_SATA_SIL
 #define CONFIG_SYS_SATA_MAX_DEVICE	2
 #define CONFIG_LIBATA
diff --git a/include/configs/p1_twr.h b/include/configs/p1_twr.h
index fd644f22da..dffb15aea9 100644
--- a/include/configs/p1_twr.h
+++ b/include/configs/p1_twr.h
@@ -50,7 +50,6 @@
 #define CONFIG_TSEC_ENET	/* tsec ethernet support */
 #define CONFIG_ENV_OVERWRITE
 
-#define CONFIG_CMD_SATA
 #define CONFIG_SATA_SIL3114
 #define CONFIG_SYS_SATA_MAX_DEVICE	2
 #define CONFIG_LIBATA
diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h
index 3e09e88ffe..9276cf9734 100644
--- a/include/configs/sandbox.h
+++ b/include/configs/sandbox.h
@@ -162,7 +162,6 @@
 #define CONFIG_SYS_SCSI_MAX_SCSI_ID	8
 #define CONFIG_SYS_SCSI_MAX_LUN		4
 
-#define CONFIG_CMD_SATA
 #define CONFIG_SYS_SATA_MAX_DEVICE	2
 
 #define CONFIG_SYSTEMACE
diff --git a/include/configs/t4qds.h b/include/configs/t4qds.h
index 260cdee001..6d8c78f76b 100644
--- a/include/configs/t4qds.h
+++ b/include/configs/t4qds.h
@@ -223,7 +223,6 @@
 #define CONFIG_SYS_SATA2_FLAGS		FLAGS_DMA
 
 #define CONFIG_LBA48
-#define CONFIG_CMD_SATA
 #endif
 
 #ifdef CONFIG_FMAN_ENET
diff --git a/include/configs/tbs2910.h b/include/configs/tbs2910.h
index 84ca1c443e..79f6b162f7 100644
--- a/include/configs/tbs2910.h
+++ b/include/configs/tbs2910.h
@@ -80,7 +80,6 @@
 #endif
 
 /* SATA */
-#define CONFIG_CMD_SATA
 #ifdef CONFIG_CMD_SATA
 #define CONFIG_DWC_AHSATA
 #define CONFIG_SYS_SATA_MAX_DEVICE	1
diff --git a/include/configs/theadorable.h b/include/configs/theadorable.h
index 27cae9d528..94e207c8c4 100644
--- a/include/configs/theadorable.h
+++ b/include/configs/theadorable.h
@@ -23,7 +23,6 @@
 /*
  * Commands configuration
  */
-#define CONFIG_CMD_SATA
 
 /*
  * The debugging version enables USB support via defconfig.
diff --git a/include/configs/udoo.h b/include/configs/udoo.h
index d84aa1679e..aef4563ede 100644
--- a/include/configs/udoo.h
+++ b/include/configs/udoo.h
@@ -24,7 +24,6 @@
 
 /* SATA Configs */
 
-#define CONFIG_CMD_SATA
 #ifdef CONFIG_CMD_SATA
 #define CONFIG_DWC_AHSATA
 #define CONFIG_SYS_SATA_MAX_DEVICE	1
diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h
index 2a6c6fbb70..afc5edf33b 100644
--- a/include/configs/wandboard.h
+++ b/include/configs/wandboard.h
@@ -24,7 +24,6 @@
 
 /* SATA Configs */
 
-#define CONFIG_CMD_SATA
 #ifdef CONFIG_CMD_SATA
 #define CONFIG_DWC_AHSATA
 #define CONFIG_SYS_SATA_MAX_DEVICE	1
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index e244b20dd0..a57d20f624 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -399,7 +399,6 @@ CONFIG_CMD_READ
 CONFIG_CMD_REGINFO
 CONFIG_CMD_REISER
 CONFIG_CMD_SANDBOX
-CONFIG_CMD_SATA
 CONFIG_CMD_SAVES
 CONFIG_CMD_SCSI
 CONFIG_CMD_SDRAM
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 06/29] Kconfig: Add CONFIG_SATA to enable SATA
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (4 preceding siblings ...)
  2017-06-05 19:14 ` [U-Boot] [PATCH 05/29] Convert CONFIG_CMD_SATA to Kconfig Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  2:13   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 07/29] sata: Move drivers into new drivers/ata directory Simon Glass
                   ` (22 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

At present CONFIG_CMD_SATA enables the 'sata' command which also brings
in SATA support. Some boards may wish to enable SATA without the command.
Add a separate CONFIG to permit this.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 api/api_storage.c                         |  2 +-
 arch/arm/cpu/armv7/mx6/clock.c            |  6 +++---
 arch/arm/imx-common/Makefile              |  2 +-
 arch/arm/imx-common/cpu.c                 |  2 +-
 arch/powerpc/cpu/mpc85xx/cpu_init.c       |  2 +-
 board/advantech/dms-ba16/dms-ba16.c       |  2 +-
 board/bachmann/ot1200/ot1200.c            |  2 +-
 board/boundary/nitrogen6x/nitrogen6x.c    |  2 +-
 board/congatec/cgtqmx6eval/cgtqmx6eval.c  |  2 +-
 board/gateworks/gw_ventana/gw_ventana.c   |  2 +-
 board/kosagi/novena/novena.c              |  2 +-
 board/toradex/apalis_imx6/apalis_imx6.c   |  2 +-
 board/toradex/colibri_imx6/colibri_imx6.c |  2 +-
 board/udoo/udoo.c                         |  2 +-
 board/wandboard/wandboard.c               |  2 +-
 cmd/Kconfig                               |  1 +
 common/Makefile                           |  2 +-
 common/splash_source.c                    |  2 +-
 drivers/block/Kconfig                     | 15 ++++++++++++++-
 fs/fat/fat.c                              |  2 +-
 include/config_distro_bootcmd.h           |  6 +++---
 include/config_fallbacks.h                |  2 +-
 22 files changed, 39 insertions(+), 25 deletions(-)

diff --git a/api/api_storage.c b/api/api_storage.c
index f858f09f1a..84c03214d9 100644
--- a/api/api_storage.c
+++ b/api/api_storage.c
@@ -60,7 +60,7 @@ void dev_stor_init(void)
 	specs[ENUM_MMC].type = DEV_TYP_STOR | DT_STOR_MMC;
 	specs[ENUM_MMC].name = "mmc";
 #endif
-#if defined(CONFIG_CMD_SATA)
+#if defined(CONFIG_SATA)
 	specs[ENUM_SATA].max_dev = CONFIG_SYS_SATA_MAX_DEVICE;
 	specs[ENUM_SATA].enum_started = 0;
 	specs[ENUM_SATA].enum_ended = 0;
diff --git a/arch/arm/cpu/armv7/mx6/clock.c b/arch/arm/cpu/armv7/mx6/clock.c
index 84bc2134fe..1f2739e864 100644
--- a/arch/arm/cpu/armv7/mx6/clock.c
+++ b/arch/arm/cpu/armv7/mx6/clock.c
@@ -1042,7 +1042,7 @@ u32 imx_get_fecclk(void)
 	return mxc_get_clock(MXC_IPG_CLK);
 }
 
-#if defined(CONFIG_CMD_SATA) || defined(CONFIG_PCIE_IMX)
+#if defined(CONFIG_SATA) || defined(CONFIG_PCIE_IMX)
 static int enable_enet_pll(uint32_t en)
 {
 	struct mxc_ccm_reg *const imx_ccm
@@ -1069,7 +1069,7 @@ static int enable_enet_pll(uint32_t en)
 }
 #endif
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 static void ungate_sata_clock(void)
 {
 	struct mxc_ccm_reg *const imx_ccm =
@@ -1143,7 +1143,7 @@ int enable_pcie_clock(void)
 	clrbits_le32(&ccm_regs->cbcmr, MXC_CCM_CBCMR_PCIE_AXI_CLK_SEL);
 
 	/* Party time! Ungate the clock to the PCIe. */
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	ungate_sata_clock();
 #endif
 	ungate_pcie_clock();
diff --git a/arch/arm/imx-common/Makefile b/arch/arm/imx-common/Makefile
index b7cb434bd7..fc69172b0b 100644
--- a/arch/arm/imx-common/Makefile
+++ b/arch/arm/imx-common/Makefile
@@ -25,7 +25,7 @@ obj-$(CONFIG_SYSCOUNTER_TIMER) += syscounter.o
 endif
 ifeq ($(SOC),$(filter $(SOC),mx6 mx7))
 obj-y 	+= cache.o init.o
-obj-$(CONFIG_CMD_SATA) += sata.o
+obj-$(CONFIG_SATA) += sata.o
 obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o
 obj-$(CONFIG_IMX_RDC) += rdc-sema.o
 obj-$(CONFIG_IMX_BOOTAUX) += imx_bootaux.o
diff --git a/arch/arm/imx-common/cpu.c b/arch/arm/imx-common/cpu.c
index 40fe813d29..53cd0f61e9 100644
--- a/arch/arm/imx-common/cpu.c
+++ b/arch/arm/imx-common/cpu.c
@@ -275,7 +275,7 @@ u32 get_ahb_clk(void)
 
 void arch_preboot_os(void)
 {
-#if defined(CONFIG_CMD_SATA)
+#if defined(CONFIG_SATA)
 	sata_stop();
 #if defined(CONFIG_MX6)
 	disable_sata_clock();
diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c b/arch/powerpc/cpu/mpc85xx/cpu_init.c
index f5bf67c990..388fe2b4ef 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c
@@ -1024,7 +1024,7 @@ void arch_preboot_os(void)
 	mtmsr(msr);
 }
 
-#if defined(CONFIG_CMD_SATA) && defined(CONFIG_FSL_SATA)
+#if defined(CONFIG_SATA) && defined(CONFIG_FSL_SATA)
 int sata_initialize(void)
 {
 	if (is_serdes_configured(SATA1) || is_serdes_configured(SATA2))
diff --git a/board/advantech/dms-ba16/dms-ba16.c b/board/advantech/dms-ba16/dms-ba16.c
index 91e96ab096..2dab906f44 100644
--- a/board/advantech/dms-ba16/dms-ba16.c
+++ b/board/advantech/dms-ba16/dms-ba16.c
@@ -609,7 +609,7 @@ int board_late_init(void)
 	pwm_enable(0);
 #endif
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	setup_ba16_sata();
 #endif
 
diff --git a/board/bachmann/ot1200/ot1200.c b/board/bachmann/ot1200/ot1200.c
index c0a8b6423e..74f652e025 100644
--- a/board/bachmann/ot1200/ot1200.c
+++ b/board/bachmann/ot1200/ot1200.c
@@ -338,7 +338,7 @@ int board_init(void)
 
 	leds_on();
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	setup_sata();
 #endif
 
diff --git a/board/boundary/nitrogen6x/nitrogen6x.c b/board/boundary/nitrogen6x/nitrogen6x.c
index ab8b2be19b..1145af53d7 100644
--- a/board/boundary/nitrogen6x/nitrogen6x.c
+++ b/board/boundary/nitrogen6x/nitrogen6x.c
@@ -903,7 +903,7 @@ int board_init(void)
 	setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
 	setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	setup_sata();
 #endif
 
diff --git a/board/congatec/cgtqmx6eval/cgtqmx6eval.c b/board/congatec/cgtqmx6eval/cgtqmx6eval.c
index 24956a8a94..fe7db91dd8 100644
--- a/board/congatec/cgtqmx6eval/cgtqmx6eval.c
+++ b/board/congatec/cgtqmx6eval/cgtqmx6eval.c
@@ -702,7 +702,7 @@ int board_init(void)
 	else
 		setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &mx6dl_i2c_pad_info1);
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	setup_sata();
 #endif
 
diff --git a/board/gateworks/gw_ventana/gw_ventana.c b/board/gateworks/gw_ventana/gw_ventana.c
index a68ec69f18..a4f2b855ee 100644
--- a/board/gateworks/gw_ventana/gw_ventana.c
+++ b/board/gateworks/gw_ventana/gw_ventana.c
@@ -632,7 +632,7 @@ int board_init(void)
 #endif
 	setup_ventana_i2c();
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	setup_sata();
 #endif
 	/* read Gateworks EEPROM into global struct (used later) */
diff --git a/board/kosagi/novena/novena.c b/board/kosagi/novena/novena.c
index f6972c2d14..17c2b13ef2 100644
--- a/board/kosagi/novena/novena.c
+++ b/board/kosagi/novena/novena.c
@@ -167,7 +167,7 @@ int board_init(void)
 	/* address of boot parameters */
 	gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	setup_sata();
 #endif
 
diff --git a/board/toradex/apalis_imx6/apalis_imx6.c b/board/toradex/apalis_imx6/apalis_imx6.c
index 7c49ddfc4b..166b93f0c5 100644
--- a/board/toradex/apalis_imx6/apalis_imx6.c
+++ b/board/toradex/apalis_imx6/apalis_imx6.c
@@ -784,7 +784,7 @@ int board_init(void)
 	(void) pmic_init();
 #endif
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	setup_sata();
 #endif
 
diff --git a/board/toradex/colibri_imx6/colibri_imx6.c b/board/toradex/colibri_imx6/colibri_imx6.c
index 69467ca895..87e24471ce 100644
--- a/board/toradex/colibri_imx6/colibri_imx6.c
+++ b/board/toradex/colibri_imx6/colibri_imx6.c
@@ -657,7 +657,7 @@ int board_init(void)
 	(void) pmic_init();
 #endif
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	setup_sata();
 #endif
 
diff --git a/board/udoo/udoo.c b/board/udoo/udoo.c
index eb7ab657ec..d2cbbaa23e 100644
--- a/board/udoo/udoo.c
+++ b/board/udoo/udoo.c
@@ -244,7 +244,7 @@ int board_init(void)
 	/* address of boot parameters */
 	gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	if (is_cpu_type(MXC_CPU_MX6Q))
 		setup_sata();
 #endif
diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c
index 2c9dc8b7c5..438bc0e743 100644
--- a/board/wandboard/wandboard.c
+++ b/board/wandboard/wandboard.c
@@ -379,7 +379,7 @@ int board_early_init_f(void)
 #if defined(CONFIG_VIDEO_IPUV3)
 	setup_display();
 #endif
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 	/* Only mx6q wandboard has SATA */
 	if (is_cpu_type(MXC_CPU_MX6Q))
 		setup_sata();
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 022eea8f2d..d69a349b72 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -734,6 +734,7 @@ config CMD_FDC
 
 config CMD_SATA
 	bool "sata - Access SATA subsystem"
+	select SATA
 	help
 	  SATA (Serial Advanced Technology Attachment) is a serial bus
 	  standard for connecting to hard drives and other storage devices.
diff --git a/common/Makefile b/common/Makefile
index c7c8ea42c6..ceade7c6bc 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -80,7 +80,7 @@ obj-$(CONFIG_LCD_ROTATION) += lcd_console_rotation.o
 obj-$(CONFIG_LCD_DT_SIMPLEFB) += lcd_simplefb.o
 obj-$(CONFIG_LYNXKDI) += lynxkdi.o
 obj-$(CONFIG_MENU) += menu.o
-obj-$(CONFIG_CMD_SATA) += sata.o
+obj-$(CONFIG_SATA) += sata.o
 obj-$(CONFIG_SCSI) += scsi.o
 obj-$(CONFIG_UPDATE_TFTP) += update.o
 obj-$(CONFIG_DFU_TFTP) += update.o
diff --git a/common/splash_source.c b/common/splash_source.c
index d1647c8300..ee055ddf15 100644
--- a/common/splash_source.c
+++ b/common/splash_source.c
@@ -162,7 +162,7 @@ static inline int splash_init_usb(void)
 }
 #endif
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 static int splash_init_sata(void)
 {
 	return sata_initialize();
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index b0e8602011..ed7fa88bf5 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -19,10 +19,23 @@ config AHCI
 	  operations at present. The block device interface has not been converted
 	  to driver model.
 
+config SATA
+	bool "Support SATA controllers"
+	help
+	  This enables support for SATA (Serial Advanced Technology
+	  Attachment), a serial bus standard for connecting to hard drives and
+	  other storage devices.
+
+	  SATA replaces PATA (originally just ATA), which stands for Parallel AT
+	  Attachment, where AT refers to an IBM AT (Advanced Technology)
+	  computer released in 1984.
+
+	  See also CMD_SATA which provides command-line support.
+
 config SCSI
 	bool "Support SCSI controllers"
 	help
-	  This enabled support for SCSI (Small Computer System Interface),
+	  This enables support for SCSI (Small Computer System Interface),
 	  a parallel interface widely used with storage peripherals such as
 	  hard drives and optical drives. The SCSI standards define physical
 	  interfaces as well as protocols for controlling devices and
diff --git a/fs/fat/fat.c b/fs/fat/fat.c
index a71bad1cbc..9ad18f96ff 100644
--- a/fs/fat/fat.c
+++ b/fs/fat/fat.c
@@ -1251,7 +1251,7 @@ int file_fat_detectfs(void)
 	}
 
 #if defined(CONFIG_IDE) || \
-    defined(CONFIG_CMD_SATA) || \
+    defined(CONFIG_SATA) || \
     defined(CONFIG_SCSI) || \
     defined(CONFIG_CMD_USB) || \
     defined(CONFIG_MMC)
diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
index 4b2c493ae3..d8dab8e46a 100644
--- a/include/config_distro_bootcmd.h
+++ b/include/config_distro_bootcmd.h
@@ -149,16 +149,16 @@
 #define SCAN_DEV_FOR_EFI
 #endif
 
-#ifdef CONFIG_CMD_SATA
+#ifdef CONFIG_SATA
 #define BOOTENV_SHARED_SATA	BOOTENV_SHARED_BLKDEV(sata)
 #define BOOTENV_DEV_SATA	BOOTENV_DEV_BLKDEV
 #define BOOTENV_DEV_NAME_SATA	BOOTENV_DEV_NAME_BLKDEV
 #else
 #define BOOTENV_SHARED_SATA
 #define BOOTENV_DEV_SATA \
-	BOOT_TARGET_DEVICES_references_SATA_without_CONFIG_CMD_SATA
+	BOOT_TARGET_DEVICES_references_SATA_without_CONFIG_SATA
 #define BOOTENV_DEV_NAME_SATA \
-	BOOT_TARGET_DEVICES_references_SATA_without_CONFIG_CMD_SATA
+	BOOT_TARGET_DEVICES_references_SATA_without_CONFIG_SATA
 #endif
 
 #ifdef CONFIG_SCSI
diff --git a/include/config_fallbacks.h b/include/config_fallbacks.h
index 2656c75b30..d1411f0550 100644
--- a/include/config_fallbacks.h
+++ b/include/config_fallbacks.h
@@ -48,7 +48,7 @@
 
 /* Rather than repeat this expression each time, add a define for it */
 #if defined(CONFIG_IDE) || \
-	defined(CONFIG_CMD_SATA) || \
+	defined(CONFIG_SATA) || \
 	defined(CONFIG_SCSI) || \
 	defined(CONFIG_CMD_USB) || \
 	defined(CONFIG_CMD_PART) || \
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 07/29] sata: Move drivers into new drivers/ata directory
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (5 preceding siblings ...)
  2017-06-05 19:14 ` [U-Boot] [PATCH 06/29] Kconfig: Add CONFIG_SATA to enable SATA Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  2:13   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 08/29] scsi: Move drivers into new drivers/scsi directory Simon Glass
                   ` (21 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

At present we have the SATA and PATA drivers mixed up in the drivers/block
directory. It is better to split them out into their own place. Use
drivers/ata which is what Linux does.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/powerpc/cpu/mpc85xx/cpu_init.c   |  2 +-
 common/Makefile                       |  1 -
 drivers/Kconfig                       |  2 ++
 drivers/Makefile                      |  3 +-
 drivers/ata/Kconfig                   | 62 +++++++++++++++++++++++++++++++++++
 drivers/ata/Makefile                  | 22 +++++++++++++
 drivers/{block => ata}/ahci-uclass.c  |  0
 drivers/{block => ata}/ahci.c         |  0
 drivers/{block => ata}/dwc_ahci.c     |  0
 drivers/{block => ata}/dwc_ahsata.c   |  0
 drivers/{block => ata}/dwc_ahsata.h   |  0
 drivers/{block => ata}/fsl_sata.c     |  0
 drivers/{block => ata}/fsl_sata.h     |  0
 drivers/{block => ata}/libata.c       |  0
 drivers/{block => ata}/mvsata_ide.c   |  0
 drivers/{block => ata}/mxc_ata.c      |  0
 {common => drivers/ata}/sata.c        |  0
 drivers/{block => ata}/sata_ceva.c    |  0
 drivers/{block => ata}/sata_dwc.c     |  0
 drivers/{block => ata}/sata_dwc.h     |  0
 drivers/{block => ata}/sata_mv.c      |  0
 drivers/{block => ata}/sata_sandbox.c |  0
 drivers/{block => ata}/sata_sil.c     |  0
 drivers/{block => ata}/sata_sil.h     |  0
 drivers/{block => ata}/sata_sil3114.c |  0
 drivers/{block => ata}/sata_sil3114.h |  0
 drivers/block/Kconfig                 | 45 -------------------------
 drivers/block/Makefile                | 16 +--------
 28 files changed, 90 insertions(+), 63 deletions(-)
 create mode 100644 drivers/ata/Kconfig
 create mode 100644 drivers/ata/Makefile
 rename drivers/{block => ata}/ahci-uclass.c (100%)
 rename drivers/{block => ata}/ahci.c (100%)
 rename drivers/{block => ata}/dwc_ahci.c (100%)
 rename drivers/{block => ata}/dwc_ahsata.c (100%)
 rename drivers/{block => ata}/dwc_ahsata.h (100%)
 rename drivers/{block => ata}/fsl_sata.c (100%)
 rename drivers/{block => ata}/fsl_sata.h (100%)
 rename drivers/{block => ata}/libata.c (100%)
 rename drivers/{block => ata}/mvsata_ide.c (100%)
 rename drivers/{block => ata}/mxc_ata.c (100%)
 rename {common => drivers/ata}/sata.c (100%)
 rename drivers/{block => ata}/sata_ceva.c (100%)
 rename drivers/{block => ata}/sata_dwc.c (100%)
 rename drivers/{block => ata}/sata_dwc.h (100%)
 rename drivers/{block => ata}/sata_mv.c (100%)
 rename drivers/{block => ata}/sata_sandbox.c (100%)
 rename drivers/{block => ata}/sata_sil.c (100%)
 rename drivers/{block => ata}/sata_sil.h (100%)
 rename drivers/{block => ata}/sata_sil3114.c (100%)
 rename drivers/{block => ata}/sata_sil3114.h (100%)

diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c b/arch/powerpc/cpu/mpc85xx/cpu_init.c
index 388fe2b4ef..a3076d8d71 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c
@@ -48,7 +48,7 @@
 #ifndef CONFIG_ARCH_QEMU_E500
 #include <fsl_ddr.h>
 #endif
-#include "../../../../drivers/block/fsl_sata.h"
+#include "../../../../drivers/ata/fsl_sata.h"
 #ifdef CONFIG_U_QE
 #include <fsl_qe.h>
 #endif
diff --git a/common/Makefile b/common/Makefile
index ceade7c6bc..026f58211d 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -80,7 +80,6 @@ obj-$(CONFIG_LCD_ROTATION) += lcd_console_rotation.o
 obj-$(CONFIG_LCD_DT_SIMPLEFB) += lcd_simplefb.o
 obj-$(CONFIG_LYNXKDI) += lynxkdi.o
 obj-$(CONFIG_MENU) += menu.o
-obj-$(CONFIG_SATA) += sata.o
 obj-$(CONFIG_SCSI) += scsi.o
 obj-$(CONFIG_UPDATE_TFTP) += update.o
 obj-$(CONFIG_DFU_TFTP) += update.o
diff --git a/drivers/Kconfig b/drivers/Kconfig
index a736386a0d..63e4034c56 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -6,6 +6,8 @@ source "drivers/core/Kconfig"
 
 source "drivers/adc/Kconfig"
 
+source "drivers/ata/Kconfig"
+
 source "drivers/block/Kconfig"
 
 source "drivers/clk/Kconfig"
diff --git a/drivers/Makefile b/drivers/Makefile
index 058bccb761..9bbcc7bf9c 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -45,7 +45,7 @@ obj-$(CONFIG_SPL_DFU_SUPPORT) += dfu/
 obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/
 obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/
 obj-$(CONFIG_OMAP_USB_PHY) += usb/phy/
-obj-$(CONFIG_SPL_SATA_SUPPORT) += block/
+obj-$(CONFIG_SPL_SATA_SUPPORT) += ata/
 obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += block/
 obj-$(CONFIG_SPL_MMC_SUPPORT) += block/
 endif
@@ -66,6 +66,7 @@ endif
 ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
 
 obj-y += adc/
+obj-y += ata/
 obj-$(CONFIG_DM_DEMO) += demo/
 obj-$(CONFIG_BIOSEMU) += bios_emulator/
 obj-y += block/
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
new file mode 100644
index 0000000000..6427f1b94a
--- /dev/null
+++ b/drivers/ata/Kconfig
@@ -0,0 +1,62 @@
+config AHCI
+	bool "Support SATA controllers with driver model"
+	depends on DM
+	help
+	  This enables a uclass for disk controllers in U-Boot. Various driver
+	  types can use this, such as AHCI/SATA. It does not provide any standard
+	  operations at present. The block device interface has not been converted
+	  to driver model.
+
+config SATA
+	bool "Support SATA controllers"
+	help
+	  This enables support for SATA (Serial Advanced Technology
+	  Attachment), a serial bus standard for connecting to hard drives and
+	  other storage devices.
+
+	  SATA replaces PATA (originally just ATA), which stands for Parallel AT
+	  Attachment, where AT refers to an IBM AT (Advanced Technology)
+	  computer released in 1984.
+
+	  See also CMD_SATA which provides command-line support.
+
+config SCSI
+	bool "Support SCSI controllers"
+	help
+	  This enables support for SCSI (Small Computer System Interface),
+	  a parallel interface widely used with storage peripherals such as
+	  hard drives and optical drives. The SCSI standards define physical
+	  interfaces as well as protocols for controlling devices and
+	  tranferring data.
+
+config DM_SCSI
+	bool "Support SCSI controllers with driver model"
+	depends on BLK
+	help
+	  This option enables the SCSI (Small Computer System Interface) uclass
+	  which supports SCSI and SATA HDDs. For every device configuration
+	  (IDs/LUNs) a block device is created with RAW read/write and
+	  filesystem support.
+
+menu "SATA/SCSI device support"
+
+config SATA_CEVA
+	bool "Ceva Sata controller"
+	depends on AHCI
+	depends on DM_SCSI
+	help
+	  This option enables Ceva Sata controller hard IP available on Xilinx
+	  ZynqMP. Support up to 2 external devices. Complient with SATA 3.1 and
+	  AHCI 1.3 specifications with hot-plug detect feature.
+
+
+config DWC_AHCI
+	bool "Enable Synopsys DWC AHCI driver support"
+	select SCSI_AHCI
+	select PHY
+	depends on DM_SCSI
+	help
+	  Enable this driver to support Sata devices through
+	  Synopsys DWC AHCI module.
+
+endmenu
diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
new file mode 100644
index 0000000000..c48184c4c3
--- /dev/null
+++ b/drivers/ata/Makefile
@@ -0,0 +1,22 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-$(CONFIG_DWC_AHCI) += dwc_ahci.o
+obj-$(CONFIG_AHCI) += ahci-uclass.o
+obj-$(CONFIG_SCSI_AHCI) += ahci.o
+obj-$(CONFIG_DWC_AHSATA) += dwc_ahsata.o
+obj-$(CONFIG_FSL_SATA) += fsl_sata.o
+obj-$(CONFIG_LIBATA) += libata.o
+obj-$(CONFIG_MVSATA_IDE) += mvsata_ide.o
+obj-$(CONFIG_MX51_PATA) += mxc_ata.o
+obj-$(CONFIG_SATA) += sata.o
+obj-$(CONFIG_SATA_CEVA) += sata_ceva.o
+obj-$(CONFIG_SATA_DWC) += sata_dwc.o
+obj-$(CONFIG_SATA_MV) += sata_mv.o
+obj-$(CONFIG_SATA_SIL3114) += sata_sil3114.o
+obj-$(CONFIG_SATA_SIL) += sata_sil.o
+obj-$(CONFIG_SANDBOX) += sata_sandbox.o
diff --git a/drivers/block/ahci-uclass.c b/drivers/ata/ahci-uclass.c
similarity index 100%
rename from drivers/block/ahci-uclass.c
rename to drivers/ata/ahci-uclass.c
diff --git a/drivers/block/ahci.c b/drivers/ata/ahci.c
similarity index 100%
rename from drivers/block/ahci.c
rename to drivers/ata/ahci.c
diff --git a/drivers/block/dwc_ahci.c b/drivers/ata/dwc_ahci.c
similarity index 100%
rename from drivers/block/dwc_ahci.c
rename to drivers/ata/dwc_ahci.c
diff --git a/drivers/block/dwc_ahsata.c b/drivers/ata/dwc_ahsata.c
similarity index 100%
rename from drivers/block/dwc_ahsata.c
rename to drivers/ata/dwc_ahsata.c
diff --git a/drivers/block/dwc_ahsata.h b/drivers/ata/dwc_ahsata.h
similarity index 100%
rename from drivers/block/dwc_ahsata.h
rename to drivers/ata/dwc_ahsata.h
diff --git a/drivers/block/fsl_sata.c b/drivers/ata/fsl_sata.c
similarity index 100%
rename from drivers/block/fsl_sata.c
rename to drivers/ata/fsl_sata.c
diff --git a/drivers/block/fsl_sata.h b/drivers/ata/fsl_sata.h
similarity index 100%
rename from drivers/block/fsl_sata.h
rename to drivers/ata/fsl_sata.h
diff --git a/drivers/block/libata.c b/drivers/ata/libata.c
similarity index 100%
rename from drivers/block/libata.c
rename to drivers/ata/libata.c
diff --git a/drivers/block/mvsata_ide.c b/drivers/ata/mvsata_ide.c
similarity index 100%
rename from drivers/block/mvsata_ide.c
rename to drivers/ata/mvsata_ide.c
diff --git a/drivers/block/mxc_ata.c b/drivers/ata/mxc_ata.c
similarity index 100%
rename from drivers/block/mxc_ata.c
rename to drivers/ata/mxc_ata.c
diff --git a/common/sata.c b/drivers/ata/sata.c
similarity index 100%
rename from common/sata.c
rename to drivers/ata/sata.c
diff --git a/drivers/block/sata_ceva.c b/drivers/ata/sata_ceva.c
similarity index 100%
rename from drivers/block/sata_ceva.c
rename to drivers/ata/sata_ceva.c
diff --git a/drivers/block/sata_dwc.c b/drivers/ata/sata_dwc.c
similarity index 100%
rename from drivers/block/sata_dwc.c
rename to drivers/ata/sata_dwc.c
diff --git a/drivers/block/sata_dwc.h b/drivers/ata/sata_dwc.h
similarity index 100%
rename from drivers/block/sata_dwc.h
rename to drivers/ata/sata_dwc.h
diff --git a/drivers/block/sata_mv.c b/drivers/ata/sata_mv.c
similarity index 100%
rename from drivers/block/sata_mv.c
rename to drivers/ata/sata_mv.c
diff --git a/drivers/block/sata_sandbox.c b/drivers/ata/sata_sandbox.c
similarity index 100%
rename from drivers/block/sata_sandbox.c
rename to drivers/ata/sata_sandbox.c
diff --git a/drivers/block/sata_sil.c b/drivers/ata/sata_sil.c
similarity index 100%
rename from drivers/block/sata_sil.c
rename to drivers/ata/sata_sil.c
diff --git a/drivers/block/sata_sil.h b/drivers/ata/sata_sil.h
similarity index 100%
rename from drivers/block/sata_sil.h
rename to drivers/ata/sata_sil.h
diff --git a/drivers/block/sata_sil3114.c b/drivers/ata/sata_sil3114.c
similarity index 100%
rename from drivers/block/sata_sil3114.c
rename to drivers/ata/sata_sil3114.c
diff --git a/drivers/block/sata_sil3114.h b/drivers/ata/sata_sil3114.h
similarity index 100%
rename from drivers/block/sata_sil3114.h
rename to drivers/ata/sata_sil3114.h
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index ed7fa88bf5..1ddd6508e4 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -10,28 +10,6 @@ config BLK
 	  be partitioned into several areas, called 'partitions' in U-Boot.
 	  A filesystem can be placed in each partition.
 
-config AHCI
-	bool "Support SATA controllers with driver model"
-	depends on DM
-	help
-	  This enables a uclass for disk controllers in U-Boot. Various driver
-	  types can use this, such as AHCI/SATA. It does not provide any standard
-	  operations at present. The block device interface has not been converted
-	  to driver model.
-
-config SATA
-	bool "Support SATA controllers"
-	help
-	  This enables support for SATA (Serial Advanced Technology
-	  Attachment), a serial bus standard for connecting to hard drives and
-	  other storage devices.
-
-	  SATA replaces PATA (originally just ATA), which stands for Parallel AT
-	  Attachment, where AT refers to an IBM AT (Advanced Technology)
-	  computer released in 1984.
-
-	  See also CMD_SATA which provides command-line support.
-
 config SCSI
 	bool "Support SCSI controllers"
 	help
@@ -59,29 +37,6 @@ config BLOCK_CACHE
 	  it will prevent repeated reads from directory structures and other
 	  filesystem data structures.
 
-menu "SATA/SCSI device support"
-
-config SATA_CEVA
-	bool "Ceva Sata controller"
-	depends on AHCI
-	depends on DM_SCSI
-	help
-	  This option enables Ceva Sata controller hard IP available on Xilinx
-	  ZynqMP. Support up to 2 external devices. Complient with SATA 3.1 and
-	  AHCI 1.3 specifications with hot-plug detect feature.
-
-
-config DWC_AHCI
-	bool "Enable Synopsys DWC AHCI driver support"
-	select SCSI_AHCI
-	select PHY
-	depends on DM_SCSI
-	help
-	  Enable this driver to support Sata devices through
-	  Synopsys DWC AHCI module.
-
-endmenu
-
 config IDE
 	bool "Support IDE controllers"
 	help
diff --git a/drivers/block/Makefile b/drivers/block/Makefile
index 2a4c9b8f9e..2bfcc4a683 100644
--- a/drivers/block/Makefile
+++ b/drivers/block/Makefile
@@ -11,23 +11,9 @@ ifndef CONFIG_BLK
 obj-y += blk_legacy.o
 endif
 
-obj-$(CONFIG_DWC_AHCI) += dwc_ahci.o
-obj-$(CONFIG_AHCI) += ahci-uclass.o
-obj-$(CONFIG_DM_SCSI) += scsi-uclass.o
-obj-$(CONFIG_SCSI_AHCI) += ahci.o
-obj-$(CONFIG_DWC_AHSATA) += dwc_ahsata.o
-obj-$(CONFIG_FSL_SATA) += fsl_sata.o
 obj-$(CONFIG_IDE) += ide.o
 obj-$(CONFIG_IDE_FTIDE020) += ftide020.o
-obj-$(CONFIG_LIBATA) += libata.o
-obj-$(CONFIG_MVSATA_IDE) += mvsata_ide.o
-obj-$(CONFIG_MX51_PATA) += mxc_ata.o
-obj-$(CONFIG_SATA_CEVA) += sata_ceva.o
-obj-$(CONFIG_SATA_DWC) += sata_dwc.o
-obj-$(CONFIG_SATA_MV) += sata_mv.o
-obj-$(CONFIG_SATA_SIL3114) += sata_sil3114.o
-obj-$(CONFIG_SATA_SIL) += sata_sil.o
 obj-$(CONFIG_IDE_SIL680) += sil680.o
-obj-$(CONFIG_SANDBOX) += sandbox.o sandbox_scsi.o sata_sandbox.o
+obj-$(CONFIG_SANDBOX) += sandbox.o sandbox_scsi.o
 obj-$(CONFIG_SYSTEMACE) += systemace.o
 obj-$(CONFIG_BLOCK_CACHE) += blkcache.o
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 08/29] scsi: Move drivers into new drivers/scsi directory
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (6 preceding siblings ...)
  2017-06-05 19:14 ` [U-Boot] [PATCH 07/29] sata: Move drivers into new drivers/ata directory Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  2:13   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 09/29] dm: scsi: Rearrange header file for driver model Simon Glass
                   ` (20 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

At present we have the SCSI drivers in the drivers/block and common/
directories. It is better to split them out into their own place. Use
drivers/scsi which is what Linux does.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 common/Makefile                        |  4 ----
 drivers/Kconfig                        |  2 ++
 drivers/Makefile                       |  3 ++-
 drivers/block/Kconfig                  | 18 ------------------
 drivers/block/Makefile                 |  2 +-
 drivers/scsi/Kconfig                   | 17 +++++++++++++++++
 drivers/scsi/Makefile                  | 19 +++++++++++++++++++
 drivers/{block => scsi}/sandbox_scsi.c |  0
 drivers/{block => scsi}/scsi-uclass.c  |  0
 {common => drivers/scsi}/scsi.c        |  0
 10 files changed, 41 insertions(+), 24 deletions(-)
 create mode 100644 drivers/scsi/Kconfig
 create mode 100644 drivers/scsi/Makefile
 rename drivers/{block => scsi}/sandbox_scsi.c (100%)
 rename drivers/{block => scsi}/scsi-uclass.c (100%)
 rename {common => drivers/scsi}/scsi.c (100%)

diff --git a/common/Makefile b/common/Makefile
index 026f58211d..3c2e477d72 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -80,7 +80,6 @@ obj-$(CONFIG_LCD_ROTATION) += lcd_console_rotation.o
 obj-$(CONFIG_LCD_DT_SIMPLEFB) += lcd_simplefb.o
 obj-$(CONFIG_LYNXKDI) += lynxkdi.o
 obj-$(CONFIG_MENU) += menu.o
-obj-$(CONFIG_SCSI) += scsi.o
 obj-$(CONFIG_UPDATE_TFTP) += update.o
 obj-$(CONFIG_DFU_TFTP) += update.o
 obj-$(CONFIG_USB_KEYBOARD) += usb_kbd.o
@@ -119,9 +118,6 @@ obj-$(CONFIG_ENV_IS_IN_NAND) += env_nand.o
 obj-$(CONFIG_ENV_IS_IN_SPI_FLASH) += env_sf.o
 obj-$(CONFIG_ENV_IS_IN_FLASH) += env_flash.o
 endif
-ifdef CONFIG_SPL_SATA_SUPPORT
-obj-$(CONFIG_SCSI) += scsi.o
-endif
 endif
 #environment
 obj-y += env_common.o
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 63e4034c56..2e03133c43 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -72,6 +72,8 @@ source "drivers/reset/Kconfig"
 
 source "drivers/rtc/Kconfig"
 
+source "drivers/scsi/Kconfig"
+
 source "drivers/serial/Kconfig"
 
 source "drivers/sound/Kconfig"
diff --git a/drivers/Makefile b/drivers/Makefile
index 9bbcc7bf9c..8624bd86f1 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -45,7 +45,7 @@ obj-$(CONFIG_SPL_DFU_SUPPORT) += dfu/
 obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/
 obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/
 obj-$(CONFIG_OMAP_USB_PHY) += usb/phy/
-obj-$(CONFIG_SPL_SATA_SUPPORT) += ata/
+obj-$(CONFIG_SPL_SATA_SUPPORT) += ata/ scsi/
 obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += block/
 obj-$(CONFIG_SPL_MMC_SUPPORT) += block/
 endif
@@ -82,6 +82,7 @@ obj-y += dfu/
 obj-$(CONFIG_X86) += pch/
 obj-y += phy/marvell/
 obj-y += rtc/
+obj-y += scsi/
 obj-y += sound/
 obj-y += spmi/
 obj-y += sysreset/
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index 1ddd6508e4..ca7692d8a5 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -10,24 +10,6 @@ config BLK
 	  be partitioned into several areas, called 'partitions' in U-Boot.
 	  A filesystem can be placed in each partition.
 
-config SCSI
-	bool "Support SCSI controllers"
-	help
-	  This enables support for SCSI (Small Computer System Interface),
-	  a parallel interface widely used with storage peripherals such as
-	  hard drives and optical drives. The SCSI standards define physical
-	  interfaces as well as protocols for controlling devices and
-	  tranferring data.
-
-config DM_SCSI
-	bool "Support SCSI controllers with driver model"
-	depends on BLK
-	help
-	  This option enables the SCSI (Small Computer System Interface) uclass
-	  which supports SCSI and SATA HDDs. For every device configuration
-	  (IDs/LUNs) a block device is created with RAW read/write and
-	  filesystem support.
-
 config BLOCK_CACHE
 	bool "Use block device cache"
 	default n
diff --git a/drivers/block/Makefile b/drivers/block/Makefile
index 2bfcc4a683..146c4fe01f 100644
--- a/drivers/block/Makefile
+++ b/drivers/block/Makefile
@@ -14,6 +14,6 @@ endif
 obj-$(CONFIG_IDE) += ide.o
 obj-$(CONFIG_IDE_FTIDE020) += ftide020.o
 obj-$(CONFIG_IDE_SIL680) += sil680.o
-obj-$(CONFIG_SANDBOX) += sandbox.o sandbox_scsi.o
+obj-$(CONFIG_SANDBOX) += sandbox.o
 obj-$(CONFIG_SYSTEMACE) += systemace.o
 obj-$(CONFIG_BLOCK_CACHE) += blkcache.o
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
new file mode 100644
index 0000000000..db1606e3ce
--- /dev/null
+++ b/drivers/scsi/Kconfig
@@ -0,0 +1,17 @@
+config SCSI
+	bool "Support SCSI controllers"
+	help
+	  This enables support for SCSI (Small Computer System Interface),
+	  a parallel interface widely used with storage peripherals such as
+	  hard drives and optical drives. The SCSI standards define physical
+	  interfaces as well as protocols for controlling devices and
+	  tranferring data.
+
+config DM_SCSI
+	bool "Support SCSI controllers with driver model"
+	depends on BLK
+	help
+	  This option enables the SCSI (Small Computer System Interface) uclass
+	  which supports SCSI and SATA HDDs. For every device configuration
+	  (IDs/LUNs) a block device is created with RAW read/write and
+	  filesystem support.
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
new file mode 100644
index 0000000000..7068a8f12e
--- /dev/null
+++ b/drivers/scsi/Makefile
@@ -0,0 +1,19 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+ifndef CONFIG_SPL_BUILD
+obj-$(CONFIG_DM_SCSI) += scsi-uclass.o
+obj-$(CONFIG_SCSI) += scsi.o
+obj-$(CONFIG_SANDBOX) += sandbox_scsi.o
+endif
+
+ifdef CONFIG_SPL_BUILD
+ifdef CONFIG_SPL_SATA_SUPPORT
+obj-$(CONFIG_DM_SCSI) += scsi-uclass.o
+obj-$(CONFIG_SCSI) += scsi.o
+endif
+endif
diff --git a/drivers/block/sandbox_scsi.c b/drivers/scsi/sandbox_scsi.c
similarity index 100%
rename from drivers/block/sandbox_scsi.c
rename to drivers/scsi/sandbox_scsi.c
diff --git a/drivers/block/scsi-uclass.c b/drivers/scsi/scsi-uclass.c
similarity index 100%
rename from drivers/block/scsi-uclass.c
rename to drivers/scsi/scsi-uclass.c
diff --git a/common/scsi.c b/drivers/scsi/scsi.c
similarity index 100%
rename from common/scsi.c
rename to drivers/scsi/scsi.c
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 09/29] dm: scsi: Rearrange header file for driver model
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (7 preceding siblings ...)
  2017-06-05 19:14 ` [U-Boot] [PATCH 08/29] scsi: Move drivers into new drivers/scsi directory Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  3:13   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 10/29] dm: scsi: Rename struct SCSI_cmd_block to struct scsi_cmd Simon Glass
                   ` (19 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

Put the driver-model declarations first since we are migrating to that.
Also drop scsi_init() when driver model is used.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 include/scsi.h | 34 ++++++++++++++--------------------
 1 file changed, 14 insertions(+), 20 deletions(-)

diff --git a/include/scsi.h b/include/scsi.h
index 621d9382fc..f94b2ef514 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -158,26 +158,6 @@ typedef struct SCSI_cmd_block{
 #define SCSI_WRITE_LONG	0x3F		/* Write Long (O) */
 #define SCSI_WRITE_SAME	0x41		/* Write Same (O) */
 
-
-/****************************************************************************
- * decleration of functions which have to reside in the LowLevel Part Driver
- */
-
-int scsi_exec(ccb *pccb);
-void scsi_bus_reset(void);
-#if !defined(CONFIG_DM_SCSI)
-void scsi_low_level_init(int busdevfunc);
-#else
-void scsi_low_level_init(int busdevfunc, struct udevice *dev);
-#endif
-
-/***************************************************************************
- * functions residing inside cmd_scsi.c
- */
-void scsi_init(void);
-int scsi_scan(int mode);
-
-#if defined(CONFIG_DM_SCSI)
 /**
  * struct scsi_platdata - stores information about SCSI controller
  *
@@ -190,8 +170,22 @@ struct scsi_platdata {
 	unsigned long max_lun;
 	unsigned long max_id;
 };
+
+#if defined(CONFIG_DM_SCSI)
+void scsi_low_level_init(int busdevfunc, struct udevice *dev);
+#else
+void scsi_low_level_init(int busdevfunc);
+void scsi_init(void);
 #endif
 
+int scsi_exec(ccb *pccb);
+void scsi_bus_reset(void);
+
+/***************************************************************************
+ * functions residing inside cmd_scsi.c
+ */
+int scsi_scan(int mode);
+
 #define SCSI_IDENTIFY					0xC0  /* not used */
 
 /* Hardware errors  */
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 10/29] dm: scsi: Rename struct SCSI_cmd_block to struct scsi_cmd
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (8 preceding siblings ...)
  2017-06-05 19:14 ` [U-Boot] [PATCH 09/29] dm: scsi: Rearrange header file for driver model Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  3:13   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 11/29] dm: scsi: Drop the ccb typedef Simon Glass
                   ` (18 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

This name should be lower case. Also the _block suffix is superfluous.
Rename it.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/usb/emul/sandbox_flash.c | 2 +-
 include/scsi.h                   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/emul/sandbox_flash.c b/drivers/usb/emul/sandbox_flash.c
index 73fa82b8e6..98d20c0bc1 100644
--- a/drivers/usb/emul/sandbox_flash.c
+++ b/drivers/usb/emul/sandbox_flash.c
@@ -244,7 +244,7 @@ static int handle_ufi_command(struct sandbox_flash_plat *plat,
 			      struct sandbox_flash_priv *priv, const void *buff,
 			      int len)
 {
-	const struct SCSI_cmd_block *req = buff;
+	const struct scsi_cmd *req = buff;
 
 	switch (*req->cmd) {
 	case SCSI_INQUIRY: {
diff --git a/include/scsi.h b/include/scsi.h
index f94b2ef514..5d6829d298 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -7,7 +7,7 @@
  #ifndef _SCSI_H
  #define _SCSI_H
 
-typedef struct SCSI_cmd_block{
+typedef struct scsi_cmd {
 	unsigned char		cmd[16];					/* command				   */
 	/* for request sense */
 	unsigned char		sense_buf[64]
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 11/29] dm: scsi: Drop the ccb typedef
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (9 preceding siblings ...)
  2017-06-05 19:14 ` [U-Boot] [PATCH 10/29] dm: scsi: Rename struct SCSI_cmd_block to struct scsi_cmd Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  3:13   ` Bin Meng
  2017-06-05 19:14 ` [U-Boot] [PATCH 12/29] dm: scsi: Use the uclass platform data Simon Glass
                   ` (17 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

We should not be using typedefs in U-Boot and 'ccb' is a pretty short
name. It is also used with variables. Drop the typedef and use 'struct'
instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 common/usb_storage.c        | 44 ++++++++++++++++++++++----------------------
 drivers/ata/ahci.c          | 12 ++++++------
 drivers/scsi/sandbox_scsi.c |  2 +-
 drivers/scsi/scsi.c         | 23 ++++++++++++-----------
 include/scsi.h              |  6 +++---
 5 files changed, 44 insertions(+), 43 deletions(-)

diff --git a/common/usb_storage.c b/common/usb_storage.c
index 03171f74cb..df0b057308 100644
--- a/common/usb_storage.c
+++ b/common/usb_storage.c
@@ -63,7 +63,7 @@ static const unsigned char us_direction[256/8] = {
 };
 #define US_DIRECTION(x) ((us_direction[x>>3] >> (x & 7)) & 1)
 
-static ccb usb_ccb __attribute__((aligned(ARCH_DMA_MINALIGN)));
+static struct scsi_cmd usb_ccb __aligned(ARCH_DMA_MINALIGN);
 static __u32 CBWTag;
 
 static int usb_max_devs; /* number of highest available usb device */
@@ -73,7 +73,7 @@ static struct blk_desc usb_dev_desc[USB_MAX_STOR_DEV];
 #endif
 
 struct us_data;
-typedef int (*trans_cmnd)(ccb *cb, struct us_data *data);
+typedef int (*trans_cmnd)(struct scsi_cmd *cb, struct us_data *data);
 typedef int (*trans_reset)(struct us_data *data);
 
 struct us_data {
@@ -95,7 +95,7 @@ struct us_data {
 	unsigned int	irqpipe;	 	/* pipe for release_irq */
 	unsigned char	irqmaxp;		/* max packed for irq Pipe */
 	unsigned char	irqinterval;		/* Intervall for IRQ Pipe */
-	ccb		*srb;			/* current srb */
+	struct scsi_cmd	*srb;			/* current srb */
 	trans_reset	transport_reset;	/* reset routine */
 	trans_cmnd	transport;		/* transport routine */
 };
@@ -349,7 +349,7 @@ static int usb_stor_irq(struct usb_device *dev)
 
 #ifdef	DEBUG
 
-static void usb_show_srb(ccb *pccb)
+static void usb_show_srb(struct scsi_cmd *pccb)
 {
 	int i;
 	printf("SRB: len %d datalen 0x%lX\n ", pccb->cmdlen, pccb->datalen);
@@ -541,7 +541,7 @@ static int usb_stor_CB_reset(struct us_data *us)
  * Set up the command for a BBB device. Note that the actual SCSI
  * command is copied into cbw.CBWCDB.
  */
-static int usb_stor_BBB_comdat(ccb *srb, struct us_data *us)
+static int usb_stor_BBB_comdat(struct scsi_cmd *srb, struct us_data *us)
 {
 	int result;
 	int actlen;
@@ -590,7 +590,7 @@ static int usb_stor_BBB_comdat(ccb *srb, struct us_data *us)
 /* FIXME: we also need a CBI_command which sets up the completion
  * interrupt, and waits for it
  */
-static int usb_stor_CB_comdat(ccb *srb, struct us_data *us)
+static int usb_stor_CB_comdat(struct scsi_cmd *srb, struct us_data *us)
 {
 	int result = 0;
 	int dir_in, retry;
@@ -659,7 +659,7 @@ static int usb_stor_CB_comdat(ccb *srb, struct us_data *us)
 }
 
 
-static int usb_stor_CBI_get_status(ccb *srb, struct us_data *us)
+static int usb_stor_CBI_get_status(struct scsi_cmd *srb, struct us_data *us)
 {
 	int timeout;
 
@@ -714,7 +714,7 @@ static int usb_stor_BBB_clear_endpt_stall(struct us_data *us, __u8 endpt)
 			       endpt, NULL, 0, USB_CNTL_TIMEOUT * 5);
 }
 
-static int usb_stor_BBB_transport(ccb *srb, struct us_data *us)
+static int usb_stor_BBB_transport(struct scsi_cmd *srb, struct us_data *us)
 {
 	int result, retry;
 	int dir_in;
@@ -837,11 +837,11 @@ again:
 	return result;
 }
 
-static int usb_stor_CB_transport(ccb *srb, struct us_data *us)
+static int usb_stor_CB_transport(struct scsi_cmd *srb, struct us_data *us)
 {
 	int result, status;
-	ccb *psrb;
-	ccb reqsrb;
+	struct scsi_cmd *psrb;
+	struct scsi_cmd reqsrb;
 	int retry, notready;
 
 	psrb = &reqsrb;
@@ -950,7 +950,7 @@ do_retry:
 }
 
 
-static int usb_inquiry(ccb *srb, struct us_data *ss)
+static int usb_inquiry(struct scsi_cmd *srb, struct us_data *ss)
 {
 	int retry, i;
 	retry = 5;
@@ -974,7 +974,7 @@ static int usb_inquiry(ccb *srb, struct us_data *ss)
 	return 0;
 }
 
-static int usb_request_sense(ccb *srb, struct us_data *ss)
+static int usb_request_sense(struct scsi_cmd *srb, struct us_data *ss)
 {
 	char *ptr;
 
@@ -994,7 +994,7 @@ static int usb_request_sense(ccb *srb, struct us_data *ss)
 	return 0;
 }
 
-static int usb_test_unit_ready(ccb *srb, struct us_data *ss)
+static int usb_test_unit_ready(struct scsi_cmd *srb, struct us_data *ss)
 {
 	int retries = 10;
 
@@ -1025,7 +1025,7 @@ static int usb_test_unit_ready(ccb *srb, struct us_data *ss)
 	return -1;
 }
 
-static int usb_read_capacity(ccb *srb, struct us_data *ss)
+static int usb_read_capacity(struct scsi_cmd *srb, struct us_data *ss)
 {
 	int retry;
 	/* XXX retries */
@@ -1043,8 +1043,8 @@ static int usb_read_capacity(ccb *srb, struct us_data *ss)
 	return -1;
 }
 
-static int usb_read_10(ccb *srb, struct us_data *ss, unsigned long start,
-		       unsigned short blocks)
+static int usb_read_10(struct scsi_cmd *srb, struct us_data *ss,
+		       unsigned long start, unsigned short blocks)
 {
 	memset(&srb->cmd[0], 0, 12);
 	srb->cmd[0] = SCSI_READ10;
@@ -1060,8 +1060,8 @@ static int usb_read_10(ccb *srb, struct us_data *ss, unsigned long start,
 	return ss->transport(srb, ss);
 }
 
-static int usb_write_10(ccb *srb, struct us_data *ss, unsigned long start,
-			unsigned short blocks)
+static int usb_write_10(struct scsi_cmd *srb, struct us_data *ss,
+			unsigned long start, unsigned short blocks)
 {
 	memset(&srb->cmd[0], 0, 12);
 	srb->cmd[0] = SCSI_WRITE10;
@@ -1115,7 +1115,7 @@ static unsigned long usb_stor_read(struct blk_desc *block_dev, lbaint_t blknr,
 	struct usb_device *udev;
 	struct us_data *ss;
 	int retry;
-	ccb *srb = &usb_ccb;
+	struct scsi_cmd *srb = &usb_ccb;
 #ifdef CONFIG_BLK
 	struct blk_desc *block_dev;
 #endif
@@ -1197,7 +1197,7 @@ static unsigned long usb_stor_write(struct blk_desc *block_dev, lbaint_t blknr,
 	struct usb_device *udev;
 	struct us_data *ss;
 	int retry;
-	ccb *srb = &usb_ccb;
+	struct scsi_cmd *srb = &usb_ccb;
 #ifdef CONFIG_BLK
 	struct blk_desc *block_dev;
 #endif
@@ -1395,7 +1395,7 @@ int usb_stor_get_info(struct usb_device *dev, struct us_data *ss,
 	ALLOC_CACHE_ALIGN_BUFFER(u32, cap, 2);
 	ALLOC_CACHE_ALIGN_BUFFER(u8, usb_stor_buf, 36);
 	u32 capacity, blksz;
-	ccb *pccb = &usb_ccb;
+	struct scsi_cmd *pccb = &usb_ccb;
 
 	pccb->pdata = usb_stor_buf;
 
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index f4744718a8..29835f06d3 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -689,7 +689,7 @@ static char *ata_id_strcpy(u16 *target, u16 *src, int len)
 /*
  * SCSI INQUIRY command operation.
  */
-static int ata_scsiop_inquiry(ccb *pccb)
+static int ata_scsiop_inquiry(struct scsi_cmd *pccb)
 {
 	static const u8 hdr[] = {
 		0,
@@ -753,7 +753,7 @@ static int ata_scsiop_inquiry(ccb *pccb)
 /*
  * SCSI READ10/WRITE10 command operation.
  */
-static int ata_scsiop_read_write(ccb *pccb, u8 is_write)
+static int ata_scsiop_read_write(struct scsi_cmd *pccb, u8 is_write)
 {
 	lbaint_t lba = 0;
 	u16 blocks = 0;
@@ -864,7 +864,7 @@ static int ata_scsiop_read_write(ccb *pccb, u8 is_write)
 /*
  * SCSI READ CAPACITY10 command operation.
  */
-static int ata_scsiop_read_capacity10(ccb *pccb)
+static int ata_scsiop_read_capacity10(struct scsi_cmd *pccb)
 {
 	u32 cap;
 	u64 cap64;
@@ -894,7 +894,7 @@ static int ata_scsiop_read_capacity10(ccb *pccb)
 /*
  * SCSI READ CAPACITY16 command operation.
  */
-static int ata_scsiop_read_capacity16(ccb *pccb)
+static int ata_scsiop_read_capacity16(struct scsi_cmd *pccb)
 {
 	u64 cap;
 	u64 block_size;
@@ -920,13 +920,13 @@ static int ata_scsiop_read_capacity16(ccb *pccb)
 /*
  * SCSI TEST UNIT READY command operation.
  */
-static int ata_scsiop_test_unit_ready(ccb *pccb)
+static int ata_scsiop_test_unit_ready(struct scsi_cmd *pccb)
 {
 	return (ataid[pccb->target]) ? 0 : -EPERM;
 }
 
 
-int scsi_exec(ccb *pccb)
+int scsi_exec(struct scsi_cmd *pccb)
 {
 	int ret;
 
diff --git a/drivers/scsi/sandbox_scsi.c b/drivers/scsi/sandbox_scsi.c
index f4004a350c..d943d1f9da 100644
--- a/drivers/scsi/sandbox_scsi.c
+++ b/drivers/scsi/sandbox_scsi.c
@@ -19,7 +19,7 @@ void scsi_init(void)
 {
 }
 
-int scsi_exec(ccb *pccb)
+int scsi_exec(struct scsi_cmd *pccb)
 {
 	return 0;
 }
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 6175e50764..5f5652b9e0 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -32,7 +32,7 @@
 #if defined(CONFIG_PCI) && !defined(CONFIG_SCSI_AHCI_PLAT)
 const struct pci_device_id scsi_device_list[] = { SCSI_DEV_LIST };
 #endif
-static ccb tempccb;	/* temporary scsi command buffer */
+static struct scsi_cmd tempccb;	/* temporary scsi command buffer */
 
 static unsigned char tempbuff[512]; /* temporary data buffer */
 
@@ -48,13 +48,14 @@ static struct blk_desc scsi_dev_desc[CONFIG_SYS_SCSI_MAX_DEVICE];
 #define SCSI_MAX_READ_BLK 0xFFFF
 #define SCSI_LBA48_READ	0xFFFFFFF
 
-static void scsi_print_error(ccb *pccb)
+static void scsi_print_error(struct scsi_cmd *pccb)
 {
 	/* Dummy function that could print an error for debugging */
 }
 
 #ifdef CONFIG_SYS_64BIT_LBA
-void scsi_setup_read16(ccb *pccb, lbaint_t start, unsigned long blocks)
+void scsi_setup_read16(struct scsi_cmd *pccb, lbaint_t start,
+		       unsigned long blocks)
 {
 	pccb->cmd[0] = SCSI_READ16;
 	pccb->cmd[1] = pccb->lun << 5;
@@ -82,7 +83,7 @@ void scsi_setup_read16(ccb *pccb, lbaint_t start, unsigned long blocks)
 }
 #endif
 
-static void scsi_setup_read_ext(ccb *pccb, lbaint_t start,
+static void scsi_setup_read_ext(struct scsi_cmd *pccb, lbaint_t start,
 				unsigned short blocks)
 {
 	pccb->cmd[0] = SCSI_READ10;
@@ -103,7 +104,7 @@ static void scsi_setup_read_ext(ccb *pccb, lbaint_t start,
 	      pccb->cmd[7], pccb->cmd[8]);
 }
 
-static void scsi_setup_write_ext(ccb *pccb, lbaint_t start,
+static void scsi_setup_write_ext(struct scsi_cmd *pccb, lbaint_t start,
 				 unsigned short blocks)
 {
 	pccb->cmd[0] = SCSI_WRITE10;
@@ -125,7 +126,7 @@ static void scsi_setup_write_ext(ccb *pccb, lbaint_t start,
 	      pccb->cmd[7], pccb->cmd[8]);
 }
 
-static void scsi_setup_inquiry(ccb *pccb)
+static void scsi_setup_inquiry(struct scsi_cmd *pccb)
 {
 	pccb->cmd[0] = SCSI_INQUIRY;
 	pccb->cmd[1] = pccb->lun << 5;
@@ -154,7 +155,7 @@ static ulong scsi_read(struct blk_desc *block_dev, lbaint_t blknr,
 	lbaint_t start, blks;
 	uintptr_t buf_addr;
 	unsigned short smallblks = 0;
-	ccb *pccb = (ccb *)&tempccb;
+	struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb;
 
 	/* Setup device */
 	pccb->target = block_dev->target;
@@ -227,7 +228,7 @@ static ulong scsi_write(struct blk_desc *block_dev, lbaint_t blknr,
 	lbaint_t start, blks;
 	uintptr_t buf_addr;
 	unsigned short smallblks;
-	ccb *pccb = (ccb *)&tempccb;
+	struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb;
 
 	/* Setup device */
 	pccb->target = block_dev->target;
@@ -349,7 +350,7 @@ static void scsi_ident_cpy(unsigned char *dest, unsigned char *src,
 	*dest = '\0';
 }
 
-static int scsi_read_capacity(ccb *pccb, lbaint_t *capacity,
+static int scsi_read_capacity(struct scsi_cmd *pccb, lbaint_t *capacity,
 			      unsigned long *blksz)
 {
 	*capacity = 0;
@@ -414,7 +415,7 @@ static int scsi_read_capacity(ccb *pccb, lbaint_t *capacity,
 /*
  * Some setup (fill-in) routines
  */
-static void scsi_setup_test_unit_ready(ccb *pccb)
+static void scsi_setup_test_unit_ready(struct scsi_cmd *pccb)
 {
 	pccb->cmd[0] = SCSI_TST_U_RDY;
 	pccb->cmd[1] = pccb->lun << 5;
@@ -484,7 +485,7 @@ static int scsi_detect_dev(int target, int lun, struct blk_desc *dev_desc)
 	unsigned char perq, modi;
 	lbaint_t capacity;
 	unsigned long blksz;
-	ccb *pccb = (ccb *)&tempccb;
+	struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb;
 
 	pccb->target = target;
 	pccb->lun = lun;
diff --git a/include/scsi.h b/include/scsi.h
index 5d6829d298..bc5be97465 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -7,7 +7,7 @@
  #ifndef _SCSI_H
  #define _SCSI_H
 
-typedef struct scsi_cmd {
+struct scsi_cmd {
 	unsigned char		cmd[16];					/* command				   */
 	/* for request sense */
 	unsigned char		sense_buf[64]
@@ -27,7 +27,7 @@ typedef struct scsi_cmd {
 	unsigned long		trans_bytes;			/* tranfered bytes		*/
 
 	unsigned int		priv;
-}ccb;
+};
 
 /*-----------------------------------------------------------
 **
@@ -178,7 +178,7 @@ void scsi_low_level_init(int busdevfunc);
 void scsi_init(void);
 #endif
 
-int scsi_exec(ccb *pccb);
+int scsi_exec(struct scsi_cmd *pccb);
 void scsi_bus_reset(void);
 
 /***************************************************************************
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 12/29] dm: scsi: Use the uclass platform data
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (10 preceding siblings ...)
  2017-06-05 19:14 ` [U-Boot] [PATCH 11/29] dm: scsi: Drop the ccb typedef Simon Glass
@ 2017-06-05 19:14 ` Simon Glass
  2017-06-13  3:13   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 13/29] dm: ahci: Rename struct ahci_probe_ent Simon Glass
                   ` (16 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:14 UTC (permalink / raw)
  To: u-boot

At present the two driver-model SCSI drivers use device platform data to
store information that relates to the uclass. It is better to use uclass
platform data in this situation. Update the code to do this.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/ata/ahci.c         | 2 +-
 drivers/ata/dwc_ahci.c     | 3 +--
 drivers/ata/sata_ceva.c    | 5 ++---
 drivers/scsi/scsi-uclass.c | 1 +
 drivers/scsi/scsi.c        | 2 +-
 5 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 29835f06d3..2cc604b3f4 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -479,7 +479,7 @@ static int ahci_init_one(pci_dev_t dev)
 		pci_write_config_byte(dev, 0x41, 0xa1);
 #endif
 #else
-	struct scsi_platdata *plat = dev_get_platdata(dev);
+	struct scsi_platdata *plat = dev_get_uclass_platdata(dev);
 	probe_ent->mmio_base = (void *)plat->base;
 #endif
 
diff --git a/drivers/ata/dwc_ahci.c b/drivers/ata/dwc_ahci.c
index 3f839bf987..e634df5e3c 100644
--- a/drivers/ata/dwc_ahci.c
+++ b/drivers/ata/dwc_ahci.c
@@ -28,7 +28,7 @@ struct dwc_ahci_priv {
 static int dwc_ahci_ofdata_to_platdata(struct udevice *dev)
 {
 	struct dwc_ahci_priv *priv = dev_get_priv(dev);
-	struct scsi_platdata *plat = dev_get_platdata(dev);
+	struct scsi_platdata *plat = dev_get_uclass_platdata(dev);
 	fdt_addr_t addr;
 
 	plat->max_id = fdtdec_get_uint(gd->fdt_blob, dev_of_offset(dev),
@@ -96,6 +96,5 @@ U_BOOT_DRIVER(dwc_ahci) = {
 	.ofdata_to_platdata = dwc_ahci_ofdata_to_platdata,
 	.probe	= dwc_ahci_probe,
 	.priv_auto_alloc_size = sizeof(struct dwc_ahci_priv),
-	.platdata_auto_alloc_size = sizeof(struct scsi_platdata),
 	.flags = DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/ata/sata_ceva.c b/drivers/ata/sata_ceva.c
index 65a4bb2099..01f48810f3 100644
--- a/drivers/ata/sata_ceva.c
+++ b/drivers/ata/sata_ceva.c
@@ -114,7 +114,7 @@ static int ceva_init_sata(ulong mmio)
 
 static int sata_ceva_probe(struct udevice *dev)
 {
-	struct scsi_platdata *plat = dev_get_platdata(dev);
+	struct scsi_platdata *plat = dev_get_uclass_platdata(dev);
 
 	ceva_init_sata(plat->base);
 	return 0;
@@ -127,7 +127,7 @@ static const struct udevice_id sata_ceva_ids[] = {
 
 static int sata_ceva_ofdata_to_platdata(struct udevice *dev)
 {
-	struct scsi_platdata *plat = dev_get_platdata(dev);
+	struct scsi_platdata *plat = dev_get_uclass_platdata(dev);
 
 	plat->base = devfdt_get_addr(dev);
 	if (plat->base == FDT_ADDR_T_NONE)
@@ -146,5 +146,4 @@ U_BOOT_DRIVER(ceva_host_blk) = {
 	.of_match = sata_ceva_ids,
 	.probe = sata_ceva_probe,
 	.ofdata_to_platdata = sata_ceva_ofdata_to_platdata,
-	.platdata_auto_alloc_size = sizeof(struct scsi_platdata),
 };
diff --git a/drivers/scsi/scsi-uclass.c b/drivers/scsi/scsi-uclass.c
index 05da6cdeab..e4ee44bb4c 100644
--- a/drivers/scsi/scsi-uclass.c
+++ b/drivers/scsi/scsi-uclass.c
@@ -24,4 +24,5 @@ UCLASS_DRIVER(scsi) = {
 	.id		= UCLASS_SCSI,
 	.name		= "scsi",
 	.post_probe	 = scsi_post_probe,
+	.per_device_platdata_auto_alloc_size = sizeof(struct scsi_platdata),
 };
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 5f5652b9e0..2d0f81ad1f 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -619,7 +619,7 @@ int scsi_scan(int mode)
 			return ret;
 
 		/* Get controller platdata */
-		plat = dev_get_platdata(dev);
+		plat = dev_get_uclass_platdata(dev);
 
 		for (i = 0; i < plat->max_id; i++)
 			for (lun = 0; lun < plat->max_lun; lun++)
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 13/29] dm: ahci: Rename struct ahci_probe_ent
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (11 preceding siblings ...)
  2017-06-05 19:14 ` [U-Boot] [PATCH 12/29] dm: scsi: Use the uclass platform data Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:13   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 14/29] dm: sata: Move ataid into struct ahci_uc_priv Simon Glass
                   ` (15 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

This is not a very useful name since once it is probed it still hangs
around. With driver model we will use uclass data for this, so rename the
struct.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 board/highbank/ahci.c    |  2 +-
 drivers/ata/ahci.c       | 16 +++++------
 drivers/ata/dwc_ahsata.c | 74 ++++++++++++++++++++++++------------------------
 include/ahci.h           | 13 ++++++++-
 4 files changed, 58 insertions(+), 47 deletions(-)

diff --git a/board/highbank/ahci.c b/board/highbank/ahci.c
index 1578a33fd1..dadfbdd315 100644
--- a/board/highbank/ahci.c
+++ b/board/highbank/ahci.c
@@ -172,7 +172,7 @@ static void cphy_override_lane(u8 port)
 
 #define WAIT_MS_LINKUP	4
 
-int ahci_link_up(struct ahci_probe_ent *probe_ent, int port)
+int ahci_link_up(struct ahci_uc_priv *probe_ent, int port)
 {
 	u32 tmp;
 	int j = 0;
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 2cc604b3f4..2caa29b4c5 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -24,7 +24,7 @@
 
 static int ata_io_flush(u8 port);
 
-struct ahci_probe_ent *probe_ent = NULL;
+struct ahci_uc_priv *probe_ent = NULL;
 u16 *ataid[AHCI_MAX_PORTS];
 
 #define writel_with_flush(a,b)	do { writel(a,b); readl(b); } while (0)
@@ -109,7 +109,7 @@ static int waiting_for_cmd_completed(void __iomem *offset,
 	return (i < timeout_msec) ? 0 : -1;
 }
 
-int __weak ahci_link_up(struct ahci_probe_ent *probe_ent, u8 port)
+int __weak ahci_link_up(struct ahci_uc_priv *probe_ent, u8 port)
 {
 	u32 tmp;
 	int j = 0;
@@ -166,7 +166,7 @@ int ahci_reset(void __iomem *base)
 	return 0;
 }
 
-static int ahci_host_init(struct ahci_probe_ent *probe_ent)
+static int ahci_host_init(struct ahci_uc_priv *probe_ent)
 {
 #if !defined(CONFIG_SCSI_AHCI_PLAT) && !defined(CONFIG_DM_SCSI)
 # ifdef CONFIG_DM_PCI
@@ -344,7 +344,7 @@ static int ahci_host_init(struct ahci_probe_ent *probe_ent)
 }
 
 
-static void ahci_print_info(struct ahci_probe_ent *probe_ent)
+static void ahci_print_info(struct ahci_uc_priv *probe_ent)
 {
 #if !defined(CONFIG_SCSI_AHCI_PLAT) && !defined(CONFIG_DM_SCSI)
 # if defined(CONFIG_DM_PCI)
@@ -437,13 +437,13 @@ static int ahci_init_one(pci_dev_t dev)
 #endif
 	int rc;
 
-	probe_ent = malloc(sizeof(struct ahci_probe_ent));
+	probe_ent = malloc(sizeof(struct ahci_uc_priv));
 	if (!probe_ent) {
 		printf("%s: No memory for probe_ent\n", __func__);
 		return -ENOMEM;
 	}
 
-	memset(probe_ent, 0, sizeof(struct ahci_probe_ent));
+	memset(probe_ent, 0, sizeof(struct ahci_uc_priv));
 	probe_ent->dev = dev;
 
 	probe_ent->host_flags = ATA_FLAG_SATA
@@ -1006,13 +1006,13 @@ int ahci_init(void __iomem *base)
 	int i, rc = 0;
 	u32 linkmap;
 
-	probe_ent = malloc(sizeof(struct ahci_probe_ent));
+	probe_ent = malloc(sizeof(struct ahci_uc_priv));
 	if (!probe_ent) {
 		printf("%s: No memory for probe_ent\n", __func__);
 		return -ENOMEM;
 	}
 
-	memset(probe_ent, 0, sizeof(struct ahci_probe_ent));
+	memset(probe_ent, 0, sizeof(struct ahci_uc_priv));
 
 	probe_ent->host_flags = ATA_FLAG_SATA
 				| ATA_FLAG_NO_LEGACY
diff --git a/drivers/ata/dwc_ahsata.c b/drivers/ata/dwc_ahsata.c
index c306e927db..78572a5b73 100644
--- a/drivers/ata/dwc_ahsata.c
+++ b/drivers/ata/dwc_ahsata.c
@@ -100,7 +100,7 @@ static int waiting_for_cmd_completed(u8 *offset,
 	return (i < timeout_msec) ? 0 : -1;
 }
 
-static int ahci_setup_oobr(struct ahci_probe_ent *probe_ent,
+static int ahci_setup_oobr(struct ahci_uc_priv *probe_ent,
 						int clk)
 {
 	struct sata_host_regs *host_mmio =
@@ -112,7 +112,7 @@ static int ahci_setup_oobr(struct ahci_probe_ent *probe_ent,
 	return 0;
 }
 
-static int ahci_host_init(struct ahci_probe_ent *probe_ent)
+static int ahci_host_init(struct ahci_uc_priv *probe_ent)
 {
 	u32 tmp, cap_save, num_ports;
 	int i, j, timeout = 1000;
@@ -275,7 +275,7 @@ static int ahci_host_init(struct ahci_probe_ent *probe_ent)
 	return 0;
 }
 
-static void ahci_print_info(struct ahci_probe_ent *probe_ent)
+static void ahci_print_info(struct ahci_uc_priv *probe_ent)
 {
 	struct sata_host_regs *host_mmio =
 		(struct sata_host_regs *)probe_ent->mmio_base;
@@ -331,10 +331,10 @@ static void ahci_print_info(struct ahci_probe_ent *probe_ent)
 static int ahci_init_one(int pdev)
 {
 	int rc;
-	struct ahci_probe_ent *probe_ent = NULL;
+	struct ahci_uc_priv *probe_ent = NULL;
 
-	probe_ent = malloc(sizeof(struct ahci_probe_ent));
-	memset(probe_ent, 0, sizeof(struct ahci_probe_ent));
+	probe_ent = malloc(sizeof(struct ahci_uc_priv));
+	memset(probe_ent, 0, sizeof(struct ahci_uc_priv));
 	probe_ent->dev = pdev;
 
 	probe_ent->host_flags = ATA_FLAG_SATA
@@ -361,7 +361,7 @@ err_out:
 	return rc;
 }
 
-static int ahci_fill_sg(struct ahci_probe_ent *probe_ent,
+static int ahci_fill_sg(struct ahci_uc_priv *probe_ent,
 			u8 port, unsigned char *buf, int buf_len)
 {
 	struct ahci_ioports *pp = &(probe_ent->port[port]);
@@ -408,7 +408,7 @@ static void ahci_fill_cmd_slot(struct ahci_ioports *pp, u32 cmd_slot, u32 opts)
 
 #define AHCI_GET_CMD_SLOT(c) ((c) ? ffs(c) : 0)
 
-static int ahci_exec_ata_cmd(struct ahci_probe_ent *probe_ent,
+static int ahci_exec_ata_cmd(struct ahci_uc_priv *probe_ent,
 		u8 port, struct sata_fis_h2d *cfis,
 		u8 *buf, u32 buf_len, s32 is_write)
 {
@@ -461,8 +461,8 @@ static int ahci_exec_ata_cmd(struct ahci_probe_ent *probe_ent,
 
 static void ahci_set_feature(u8 dev, u8 port)
 {
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	struct sata_fis_h2d h2d __aligned(ARCH_DMA_MINALIGN);
 	struct sata_fis_h2d *cfis = &h2d;
 
@@ -476,7 +476,7 @@ static void ahci_set_feature(u8 dev, u8 port)
 	ahci_exec_ata_cmd(probe_ent, port, cfis, NULL, 0, READ_CMD);
 }
 
-static int ahci_port_start(struct ahci_probe_ent *probe_ent,
+static int ahci_port_start(struct ahci_uc_priv *probe_ent,
 					u8 port)
 {
 	struct ahci_ioports *pp = &(probe_ent->port[port]);
@@ -560,7 +560,7 @@ int init_sata(int dev)
 {
 	int i;
 	u32 linkmap;
-	struct ahci_probe_ent *probe_ent = NULL;
+	struct ahci_uc_priv *probe_ent = NULL;
 
 #if defined(CONFIG_MX6)
 	if (!is_mx6dq() && !is_mx6dqp())
@@ -573,7 +573,7 @@ int init_sata(int dev)
 
 	ahci_init_one(dev);
 
-	probe_ent = (struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	probe_ent = (struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	linkmap = probe_ent->link_port_map;
 
 	if (0 == linkmap) {
@@ -597,7 +597,7 @@ int init_sata(int dev)
 
 int reset_sata(int dev)
 {
-	struct ahci_probe_ent *probe_ent;
+	struct ahci_uc_priv *probe_ent;
 	struct sata_host_regs *host_mmio;
 
 	if (dev < 0 || dev > (CONFIG_SYS_SATA_MAX_DEVICE - 1)) {
@@ -605,7 +605,7 @@ int reset_sata(int dev)
 		return -1;
 	}
 
-	probe_ent = (struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	probe_ent = (struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	if (NULL == probe_ent)
 		/* not initialized, so nothing to reset */
 		return 0;
@@ -636,8 +636,8 @@ static void dwc_ahsata_print_info(int dev)
 
 static void dwc_ahsata_identify(int dev, u16 *id)
 {
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	struct sata_fis_h2d h2d __aligned(ARCH_DMA_MINALIGN);
 	struct sata_fis_h2d *cfis = &h2d;
 	u8 port = probe_ent->hard_port_no;
@@ -655,8 +655,8 @@ static void dwc_ahsata_identify(int dev, u16 *id)
 
 static void dwc_ahsata_xfer_mode(int dev, u16 *id)
 {
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 
 	probe_ent->pio_mask = id[ATA_ID_PIO_MODES];
 	probe_ent->udma_mask = id[ATA_ID_UDMA_MODES];
@@ -667,8 +667,8 @@ static void dwc_ahsata_xfer_mode(int dev, u16 *id)
 static u32 dwc_ahsata_rw_cmd(int dev, u32 start, u32 blkcnt,
 				u8 *buffer, int is_write)
 {
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	struct sata_fis_h2d h2d __aligned(ARCH_DMA_MINALIGN);
 	struct sata_fis_h2d *cfis = &h2d;
 	u8 port = probe_ent->hard_port_no;
@@ -698,8 +698,8 @@ static u32 dwc_ahsata_rw_cmd(int dev, u32 start, u32 blkcnt,
 
 void dwc_ahsata_flush_cache(int dev)
 {
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	struct sata_fis_h2d h2d __aligned(ARCH_DMA_MINALIGN);
 	struct sata_fis_h2d *cfis = &h2d;
 	u8 port = probe_ent->hard_port_no;
@@ -716,8 +716,8 @@ void dwc_ahsata_flush_cache(int dev)
 static u32 dwc_ahsata_rw_cmd_ext(int dev, u32 start, lbaint_t blkcnt,
 				u8 *buffer, int is_write)
 {
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	struct sata_fis_h2d h2d __aligned(ARCH_DMA_MINALIGN);
 	struct sata_fis_h2d *cfis = &h2d;
 	u8 port = probe_ent->hard_port_no;
@@ -753,8 +753,8 @@ static u32 dwc_ahsata_rw_cmd_ext(int dev, u32 start, lbaint_t blkcnt,
 u32 dwc_ahsata_rw_ncq_cmd(int dev, u32 start, lbaint_t blkcnt,
 				u8 *buffer, int is_write)
 {
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	struct sata_fis_h2d h2d __aligned(ARCH_DMA_MINALIGN);
 	struct sata_fis_h2d *cfis = &h2d;
 	u8 port = probe_ent->hard_port_no;
@@ -795,8 +795,8 @@ u32 dwc_ahsata_rw_ncq_cmd(int dev, u32 start, lbaint_t blkcnt,
 
 void dwc_ahsata_flush_cache_ext(int dev)
 {
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	struct sata_fis_h2d h2d __aligned(ARCH_DMA_MINALIGN);
 	struct sata_fis_h2d *cfis = &h2d;
 	u8 port = probe_ent->hard_port_no;
@@ -812,8 +812,8 @@ void dwc_ahsata_flush_cache_ext(int dev)
 
 static void dwc_ahsata_init_wcache(int dev, u16 *id)
 {
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 
 	if (ata_id_has_wcache(id) && ata_id_wcache_enabled(id))
 		probe_ent->flags |= SATA_FLAG_WCACHE;
@@ -893,7 +893,7 @@ u32 ata_low_level_rw_lba28(int dev, u32 blknr, lbaint_t blkcnt,
 int sata_port_status(int dev, int port)
 {
 	struct sata_port_regs *port_mmio;
-	struct ahci_probe_ent *probe_ent = NULL;
+	struct ahci_uc_priv *probe_ent = NULL;
 
 	if (dev < 0 || dev > (CONFIG_SYS_SATA_MAX_DEVICE - 1))
 		return -EINVAL;
@@ -901,7 +901,7 @@ int sata_port_status(int dev, int port)
 	if (sata_dev_desc[dev].priv == NULL)
 		return -ENODEV;
 
-	probe_ent = (struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	probe_ent = (struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	port_mmio = (struct sata_port_regs *)probe_ent->port[port].port_mmio;
 
 	return readl(&(port_mmio->ssts)) & SATA_PORT_SSTS_DET_MASK;
@@ -926,8 +926,8 @@ ulong sata_read(int dev, ulong blknr, lbaint_t blkcnt, void *buffer)
 ulong sata_write(int dev, ulong blknr, lbaint_t blkcnt, const void *buffer)
 {
 	u32 rc;
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	u32 flags = probe_ent->flags;
 
 	if (sata_dev_desc[dev].lba48) {
@@ -953,8 +953,8 @@ int scan_sata(int dev)
 	u8 product[ATA_ID_PROD_LEN + 1] = { 0 };
 	u16 *id;
 	u64 n_sectors;
-	struct ahci_probe_ent *probe_ent =
-		(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
+	struct ahci_uc_priv *probe_ent =
+		(struct ahci_uc_priv *)sata_dev_desc[dev].priv;
 	u8 port = probe_ent->hard_port_no;
 	struct blk_desc *pdev = &(sata_dev_desc[dev]);
 
diff --git a/include/ahci.h b/include/ahci.h
index 4876b41e90..1f441d1c80 100644
--- a/include/ahci.h
+++ b/include/ahci.h
@@ -144,8 +144,19 @@ struct ahci_ioports {
 	u32	rx_fis;
 };
 
-struct ahci_probe_ent {
+/**
+ * struct ahci_uc_priv - information about an AHCI controller
+ *
+ * When driver model is used, this is accessible using dev_get_uclass_priv(dev)
+ * where dev is the controller (although at present it sometimes stands alone).
+ */
+struct ahci_uc_priv {
 #if defined(CONFIG_DM_PCI) || defined(CONFIG_DM_SCSI)
+	/*
+	 * TODO(sjg at chromium.org): Drop this once this structure is only used
+	 * in a driver-model context (i.e. attached to a device with
+	 * dev_get_uclass_priv()
+	 */
 	struct udevice *dev;
 #else
 	pci_dev_t	dev;
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 14/29] dm: sata: Move ataid into struct ahci_uc_priv
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (12 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 13/29] dm: ahci: Rename struct ahci_probe_ent Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:13   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 15/29] dm: ahci: Refactor to avoid static variables Simon Glass
                   ` (14 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

This array relates to the AHCI controller so should be exist out on its
own in the file. Move it into the structure. Adjust functions that need
access to this to take the structure as a parameter.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/ata/ahci.c | 50 +++++++++++++++++++++++++++-----------------------
 include/ahci.h     |  1 +
 2 files changed, 28 insertions(+), 23 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 2caa29b4c5..3fb41de4c9 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -25,7 +25,6 @@
 static int ata_io_flush(u8 port);
 
 struct ahci_uc_priv *probe_ent = NULL;
-u16 *ataid[AHCI_MAX_PORTS];
 
 #define writel_with_flush(a,b)	do { writel(a,b); readl(b); } while (0)
 
@@ -109,11 +108,11 @@ static int waiting_for_cmd_completed(void __iomem *offset,
 	return (i < timeout_msec) ? 0 : -1;
 }
 
-int __weak ahci_link_up(struct ahci_uc_priv *probe_ent, u8 port)
+int __weak ahci_link_up(struct ahci_uc_priv *uc_priv, u8 port)
 {
 	u32 tmp;
 	int j = 0;
-	void __iomem *port_mmio = probe_ent->port[port].port_mmio;
+	void __iomem *port_mmio = uc_priv->port[port].port_mmio;
 
 	/*
 	 * Bring up SATA link.
@@ -555,7 +554,7 @@ static int wait_spinup(void __iomem *port_mmio)
 	return -ETIMEDOUT;
 }
 
-static int ahci_port_start(u8 port)
+static int ahci_port_start(struct ahci_uc_priv *probe_ent, u8 port)
 {
 	struct ahci_ioports *pp = &(probe_ent->port[port]);
 	void __iomem *port_mmio = pp->port_mmio;
@@ -689,7 +688,8 @@ static char *ata_id_strcpy(u16 *target, u16 *src, int len)
 /*
  * SCSI INQUIRY command operation.
  */
-static int ata_scsiop_inquiry(struct scsi_cmd *pccb)
+static int ata_scsiop_inquiry(struct ahci_uc_priv *uc_priv,
+			      struct scsi_cmd *pccb)
 {
 	static const u8 hdr[] = {
 		0,
@@ -726,15 +726,15 @@ static int ata_scsiop_inquiry(struct scsi_cmd *pccb)
 		return -EIO;
 	}
 
-	if (!ataid[port]) {
-		ataid[port] = malloc(ATA_ID_WORDS * 2);
-		if (!ataid[port]) {
+	if (!uc_priv->ataid[port]) {
+		uc_priv->ataid[port] = malloc(ATA_ID_WORDS * 2);
+		if (!uc_priv->ataid[port]) {
 			printf("%s: No memory for ataid[port]\n", __func__);
 			return -ENOMEM;
 		}
 	}
 
-	idbuf = ataid[port];
+	idbuf = uc_priv->ataid[port];
 
 	memcpy(idbuf, tmpid, ATA_ID_WORDS * 2);
 	ata_swap_buf_le16(idbuf, ATA_ID_WORDS);
@@ -864,20 +864,21 @@ static int ata_scsiop_read_write(struct scsi_cmd *pccb, u8 is_write)
 /*
  * SCSI READ CAPACITY10 command operation.
  */
-static int ata_scsiop_read_capacity10(struct scsi_cmd *pccb)
+static int ata_scsiop_read_capacity10(struct ahci_uc_priv *uc_priv,
+				      struct scsi_cmd *pccb)
 {
 	u32 cap;
 	u64 cap64;
 	u32 block_size;
 
-	if (!ataid[pccb->target]) {
+	if (!uc_priv->ataid[pccb->target]) {
 		printf("scsi_ahci: SCSI READ CAPACITY10 command failure. "
 		       "\tNo ATA info!\n"
 		       "\tPlease run SCSI command INQUIRY first!\n");
 		return -EPERM;
 	}
 
-	cap64 = ata_id_n_sectors(ataid[pccb->target]);
+	cap64 = ata_id_n_sectors(uc_priv->ataid[pccb->target]);
 	if (cap64 > 0x100000000ULL)
 		cap64 = 0xffffffff;
 
@@ -894,19 +895,20 @@ static int ata_scsiop_read_capacity10(struct scsi_cmd *pccb)
 /*
  * SCSI READ CAPACITY16 command operation.
  */
-static int ata_scsiop_read_capacity16(struct scsi_cmd *pccb)
+static int ata_scsiop_read_capacity16(struct ahci_uc_priv *uc_priv,
+				      struct scsi_cmd *pccb)
 {
 	u64 cap;
 	u64 block_size;
 
-	if (!ataid[pccb->target]) {
+	if (!uc_priv->ataid[pccb->target]) {
 		printf("scsi_ahci: SCSI READ CAPACITY16 command failure. "
 		       "\tNo ATA info!\n"
 		       "\tPlease run SCSI command INQUIRY first!\n");
 		return -EPERM;
 	}
 
-	cap = ata_id_n_sectors(ataid[pccb->target]);
+	cap = ata_id_n_sectors(uc_priv->ataid[pccb->target]);
 	cap = cpu_to_be64(cap);
 	memcpy(pccb->pdata, &cap, sizeof(cap));
 
@@ -920,14 +922,16 @@ static int ata_scsiop_read_capacity16(struct scsi_cmd *pccb)
 /*
  * SCSI TEST UNIT READY command operation.
  */
-static int ata_scsiop_test_unit_ready(struct scsi_cmd *pccb)
+static int ata_scsiop_test_unit_ready(struct ahci_uc_priv *uc_priv,
+				      struct scsi_cmd *pccb)
 {
-	return (ataid[pccb->target]) ? 0 : -EPERM;
+	return (uc_priv->ataid[pccb->target]) ? 0 : -EPERM;
 }
 
 
 int scsi_exec(struct scsi_cmd *pccb)
 {
+	struct ahci_uc_priv *uc_priv = probe_ent;
 	int ret;
 
 	switch (pccb->cmd[0]) {
@@ -939,16 +943,16 @@ int scsi_exec(struct scsi_cmd *pccb)
 		ret = ata_scsiop_read_write(pccb, 1);
 		break;
 	case SCSI_RD_CAPAC10:
-		ret = ata_scsiop_read_capacity10(pccb);
+		ret = ata_scsiop_read_capacity10(uc_priv, pccb);
 		break;
 	case SCSI_RD_CAPAC16:
-		ret = ata_scsiop_read_capacity16(pccb);
+		ret = ata_scsiop_read_capacity16(uc_priv, pccb);
 		break;
 	case SCSI_TST_U_RDY:
-		ret = ata_scsiop_test_unit_ready(pccb);
+		ret = ata_scsiop_test_unit_ready(uc_priv, pccb);
 		break;
 	case SCSI_INQUIRY:
-		ret = ata_scsiop_inquiry(pccb);
+		ret = ata_scsiop_inquiry(uc_priv, pccb);
 		break;
 	default:
 		printf("Unsupport SCSI command 0x%02x\n", pccb->cmd[0]);
@@ -992,7 +996,7 @@ void scsi_low_level_init(int busdevfunc)
 
 	for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
 		if (((linkmap >> i) & 0x01)) {
-			if (ahci_port_start((u8) i)) {
+			if (ahci_port_start(probe_ent, (u8) i)) {
 				printf("Can not start port %d\n", i);
 				continue;
 			}
@@ -1035,7 +1039,7 @@ int ahci_init(void __iomem *base)
 
 	for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
 		if (((linkmap >> i) & 0x01)) {
-			if (ahci_port_start((u8) i)) {
+			if (ahci_port_start(probe_ent, (u8) i)) {
 				printf("Can not start port %d\n", i);
 				continue;
 			}
diff --git a/include/ahci.h b/include/ahci.h
index 1f441d1c80..4262ab75c8 100644
--- a/include/ahci.h
+++ b/include/ahci.h
@@ -162,6 +162,7 @@ struct ahci_uc_priv {
 	pci_dev_t	dev;
 #endif
 	struct ahci_ioports	port[AHCI_MAX_PORTS];
+	u16 *ataid[AHCI_MAX_PORTS];
 	u32	n_ports;
 	u32	hard_port_no;
 	u32	host_flags;
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 15/29] dm: ahci: Refactor to avoid static variables
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (13 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 14/29] dm: sata: Move ataid into struct ahci_uc_priv Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:13   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 16/29] dm: scsi: Indent the confusing #ifdefs Simon Glass
                   ` (13 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

With driver model we need each device to have its own state. As a step
towards this, restrict use of the global 'probe_ent' to just a few places
in the file. This will allow us to add driver-model functions which can
pass the correct data around.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/ata/ahci.c | 144 ++++++++++++++++++++++++++++-------------------------
 1 file changed, 76 insertions(+), 68 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 3fb41de4c9..2e51b49790 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -22,7 +22,7 @@
 #include <linux/ctype.h>
 #include <ahci.h>
 
-static int ata_io_flush(u8 port);
+static int ata_io_flush(struct ahci_uc_priv *uc_priv, u8 port);
 
 struct ahci_uc_priv *probe_ent = NULL;
 
@@ -165,19 +165,19 @@ int ahci_reset(void __iomem *base)
 	return 0;
 }
 
-static int ahci_host_init(struct ahci_uc_priv *probe_ent)
+static int ahci_host_init(struct ahci_uc_priv *uc_priv)
 {
 #if !defined(CONFIG_SCSI_AHCI_PLAT) && !defined(CONFIG_DM_SCSI)
 # ifdef CONFIG_DM_PCI
-	struct udevice *dev = probe_ent->dev;
+	struct udevice *dev = uc_priv->dev;
 	struct pci_child_platdata *pplat = dev_get_parent_platdata(dev);
 # else
-	pci_dev_t pdev = probe_ent->dev;
+	pci_dev_t pdev = uc_priv->dev;
 	unsigned short vendor;
 # endif
 	u16 tmp16;
 #endif
-	void __iomem *mmio = probe_ent->mmio_base;
+	void __iomem *mmio = uc_priv->mmio_base;
 	u32 tmp, cap_save, cmd;
 	int i, j, ret;
 	void __iomem *port_mmio;
@@ -189,7 +189,7 @@ static int ahci_host_init(struct ahci_uc_priv *probe_ent)
 	cap_save &= ((1 << 28) | (1 << 17));
 	cap_save |= (1 << 27);  /* Staggered Spin-up. Not needed. */
 
-	ret = ahci_reset(probe_ent->mmio_base);
+	ret = ahci_reset(uc_priv->mmio_base);
 	if (ret)
 		return ret;
 
@@ -216,23 +216,23 @@ static int ahci_host_init(struct ahci_uc_priv *probe_ent)
 	}
 # endif
 #endif
-	probe_ent->cap = readl(mmio + HOST_CAP);
-	probe_ent->port_map = readl(mmio + HOST_PORTS_IMPL);
-	port_map = probe_ent->port_map;
-	probe_ent->n_ports = (probe_ent->cap & 0x1f) + 1;
+	uc_priv->cap = readl(mmio + HOST_CAP);
+	uc_priv->port_map = readl(mmio + HOST_PORTS_IMPL);
+	port_map = uc_priv->port_map;
+	uc_priv->n_ports = (uc_priv->cap & 0x1f) + 1;
 
 	debug("cap 0x%x  port_map 0x%x  n_ports %d\n",
-	      probe_ent->cap, probe_ent->port_map, probe_ent->n_ports);
+	      uc_priv->cap, uc_priv->port_map, uc_priv->n_ports);
 
-	if (probe_ent->n_ports > CONFIG_SYS_SCSI_MAX_SCSI_ID)
-		probe_ent->n_ports = CONFIG_SYS_SCSI_MAX_SCSI_ID;
+	if (uc_priv->n_ports > CONFIG_SYS_SCSI_MAX_SCSI_ID)
+		uc_priv->n_ports = CONFIG_SYS_SCSI_MAX_SCSI_ID;
 
-	for (i = 0; i < probe_ent->n_ports; i++) {
+	for (i = 0; i < uc_priv->n_ports; i++) {
 		if (!(port_map & (1 << i)))
 			continue;
-		probe_ent->port[i].port_mmio = ahci_port_base(mmio, i);
-		port_mmio = (u8 *) probe_ent->port[i].port_mmio;
-		ahci_setup_port(&probe_ent->port[i], mmio, i);
+		uc_priv->port[i].port_mmio = ahci_port_base(mmio, i);
+		port_mmio = (u8 *)uc_priv->port[i].port_mmio;
+		ahci_setup_port(&uc_priv->port[i], mmio, i);
 
 		/* make sure port is not active */
 		tmp = readl(port_mmio + PORT_CMD);
@@ -261,7 +261,7 @@ static int ahci_host_init(struct ahci_uc_priv *probe_ent)
 		writel_with_flush(cmd, port_mmio + PORT_CMD);
 
 		/* Bring up SATA link. */
-		ret = ahci_link_up(probe_ent, i);
+		ret = ahci_link_up(uc_priv, i);
 		if (ret) {
 			printf("SATA link %d timeout.\n", i);
 			continue;
@@ -318,7 +318,7 @@ static int ahci_host_init(struct ahci_uc_priv *probe_ent)
 		tmp = readl(port_mmio + PORT_SCR_STAT);
 		debug("SATA port %d status: 0x%x\n", i, tmp);
 		if ((tmp & PORT_SCR_STAT_DET_MASK) == PORT_SCR_STAT_DET_PHYRDY)
-			probe_ent->link_port_map |= (0x01 << i);
+			uc_priv->link_port_map |= (0x01 << i);
 	}
 
 	tmp = readl(mmio + HOST_CTL);
@@ -343,25 +343,25 @@ static int ahci_host_init(struct ahci_uc_priv *probe_ent)
 }
 
 
-static void ahci_print_info(struct ahci_uc_priv *probe_ent)
+static void ahci_print_info(struct ahci_uc_priv *uc_priv)
 {
 #if !defined(CONFIG_SCSI_AHCI_PLAT) && !defined(CONFIG_DM_SCSI)
 # if defined(CONFIG_DM_PCI)
-	struct udevice *dev = probe_ent->dev;
+	struct udevice *dev = uc_priv->dev;
 # else
-	pci_dev_t pdev = probe_ent->dev;
+	pci_dev_t pdev = uc_priv->dev;
 # endif
 	u16 cc;
 #endif
-	void __iomem *mmio = probe_ent->mmio_base;
+	void __iomem *mmio = uc_priv->mmio_base;
 	u32 vers, cap, cap2, impl, speed;
 	const char *speed_s;
 	const char *scc_s;
 
 	vers = readl(mmio + HOST_VERSION);
-	cap = probe_ent->cap;
+	cap = uc_priv->cap;
 	cap2 = readl(mmio + HOST_CAP2);
-	impl = probe_ent->port_map;
+	impl = uc_priv->port_map;
 
 	speed = (cap >> 20) & 0xf;
 	if (speed == 1)
@@ -431,6 +431,7 @@ static int ahci_init_one(struct udevice *dev)
 static int ahci_init_one(pci_dev_t dev)
 # endif
 {
+	struct ahci_uc_priv *uc_priv;
 #if !defined(CONFIG_DM_SCSI)
 	u16 vendor;
 #endif
@@ -438,24 +439,25 @@ static int ahci_init_one(pci_dev_t dev)
 
 	probe_ent = malloc(sizeof(struct ahci_uc_priv));
 	if (!probe_ent) {
-		printf("%s: No memory for probe_ent\n", __func__);
+		printf("%s: No memory for uc_priv\n", __func__);
 		return -ENOMEM;
 	}
 
-	memset(probe_ent, 0, sizeof(struct ahci_uc_priv));
-	probe_ent->dev = dev;
+	uc_priv = probe_ent;
+	memset(uc_priv, 0, sizeof(struct ahci_uc_priv));
+	uc_priv->dev = dev;
 
-	probe_ent->host_flags = ATA_FLAG_SATA
+	uc_priv->host_flags = ATA_FLAG_SATA
 				| ATA_FLAG_NO_LEGACY
 				| ATA_FLAG_MMIO
 				| ATA_FLAG_PIO_DMA
 				| ATA_FLAG_NO_ATAPI;
-	probe_ent->pio_mask = 0x1f;
-	probe_ent->udma_mask = 0x7f;	/*Fixme,assume to support UDMA6 */
+	uc_priv->pio_mask = 0x1f;
+	uc_priv->udma_mask = 0x7f;	/*Fixme,assume to support UDMA6 */
 
 #if !defined(CONFIG_DM_SCSI)
 #ifdef CONFIG_DM_PCI
-	probe_ent->mmio_base = dm_pci_map_bar(dev, PCI_BASE_ADDRESS_5,
+	uc_priv->mmio_base = dm_pci_map_bar(dev, PCI_BASE_ADDRESS_5,
 					      PCI_REGION_MEM);
 
 	/* Take from kernel:
@@ -466,7 +468,7 @@ static int ahci_init_one(pci_dev_t dev)
 	if (vendor == 0x197b)
 		dm_pci_write_config8(dev, 0x41, 0xa1);
 #else
-	probe_ent->mmio_base = pci_map_bar(dev, PCI_BASE_ADDRESS_5,
+	uc_priv->mmio_base = pci_map_bar(dev, PCI_BASE_ADDRESS_5,
 					   PCI_REGION_MEM);
 
 	/* Take from kernel:
@@ -479,16 +481,16 @@ static int ahci_init_one(pci_dev_t dev)
 #endif
 #else
 	struct scsi_platdata *plat = dev_get_uclass_platdata(dev);
-	probe_ent->mmio_base = (void *)plat->base;
+	uc_priv->mmio_base = (void *)plat->base;
 #endif
 
-	debug("ahci mmio_base=0x%p\n", probe_ent->mmio_base);
+	debug("ahci mmio_base=0x%p\n", uc_priv->mmio_base);
 	/* initialize adapter */
-	rc = ahci_host_init(probe_ent);
+	rc = ahci_host_init(uc_priv);
 	if (rc)
 		goto err_out;
 
-	ahci_print_info(probe_ent);
+	ahci_print_info(uc_priv);
 
 	return 0;
 
@@ -499,9 +501,10 @@ static int ahci_init_one(pci_dev_t dev)
 
 #define MAX_DATA_BYTE_COUNT  (4*1024*1024)
 
-static int ahci_fill_sg(u8 port, unsigned char *buf, int buf_len)
+static int ahci_fill_sg(struct ahci_uc_priv *uc_priv, u8 port,
+			unsigned char *buf, int buf_len)
 {
-	struct ahci_ioports *pp = &(probe_ent->port[port]);
+	struct ahci_ioports *pp = &(uc_priv->port[port]);
 	struct ahci_sg *ahci_sg = pp->cmd_tbl_sg;
 	u32 sg_count;
 	int i;
@@ -554,9 +557,9 @@ static int wait_spinup(void __iomem *port_mmio)
 	return -ETIMEDOUT;
 }
 
-static int ahci_port_start(struct ahci_uc_priv *probe_ent, u8 port)
+static int ahci_port_start(struct ahci_uc_priv *uc_priv, u8 port)
 {
-	struct ahci_ioports *pp = &(probe_ent->port[port]);
+	struct ahci_ioports *pp = &(uc_priv->port[port]);
 	void __iomem *port_mmio = pp->port_mmio;
 	u32 port_status;
 	void __iomem *mem;
@@ -629,11 +632,11 @@ static int ahci_port_start(struct ahci_uc_priv *probe_ent, u8 port)
 }
 
 
-static int ahci_device_data_io(u8 port, u8 *fis, int fis_len, u8 *buf,
-				int buf_len, u8 is_write)
+static int ahci_device_data_io(struct ahci_uc_priv *uc_priv, u8 port, u8 *fis,
+			       int fis_len, u8 *buf, int buf_len, u8 is_write)
 {
 
-	struct ahci_ioports *pp = &(probe_ent->port[port]);
+	struct ahci_ioports *pp = &(uc_priv->port[port]);
 	void __iomem *port_mmio = pp->port_mmio;
 	u32 opts;
 	u32 port_status;
@@ -641,7 +644,7 @@ static int ahci_device_data_io(u8 port, u8 *fis, int fis_len, u8 *buf,
 
 	debug("Enter %s: for port %d\n", __func__, port);
 
-	if (port > probe_ent->n_ports) {
+	if (port > uc_priv->n_ports) {
 		printf("Invalid port number %d\n", port);
 		return -1;
 	}
@@ -654,7 +657,7 @@ static int ahci_device_data_io(u8 port, u8 *fis, int fis_len, u8 *buf,
 
 	memcpy((unsigned char *)pp->cmd_tbl, fis, fis_len);
 
-	sg_count = ahci_fill_sg(port, buf, buf_len);
+	sg_count = ahci_fill_sg(uc_priv, port, buf, buf_len);
 	opts = (fis_len >> 2) | (sg_count << 16) | (is_write << 6);
 	ahci_fill_cmd_slot(pp, opts);
 
@@ -720,8 +723,8 @@ static int ata_scsiop_inquiry(struct ahci_uc_priv *uc_priv,
 	/* Read id from sata */
 	port = pccb->target;
 
-	if (ahci_device_data_io(port, (u8 *) &fis, sizeof(fis), (u8 *)tmpid,
-				ATA_ID_WORDS * 2, 0)) {
+	if (ahci_device_data_io(uc_priv, port, (u8 *)&fis, sizeof(fis),
+				(u8 *)tmpid, ATA_ID_WORDS * 2, 0)) {
 		debug("scsi_ahci: SCSI inquiry command failure.\n");
 		return -EIO;
 	}
@@ -753,7 +756,8 @@ static int ata_scsiop_inquiry(struct ahci_uc_priv *uc_priv,
 /*
  * SCSI READ10/WRITE10 command operation.
  */
-static int ata_scsiop_read_write(struct scsi_cmd *pccb, u8 is_write)
+static int ata_scsiop_read_write(struct ahci_uc_priv *uc_priv,
+				 struct scsi_cmd *pccb, u8 is_write)
 {
 	lbaint_t lba = 0;
 	u16 blocks = 0;
@@ -833,8 +837,8 @@ static int ata_scsiop_read_write(struct scsi_cmd *pccb, u8 is_write)
 		fis[13] = (now_blocks >> 8) & 0xff;
 
 		/* Read/Write from ahci */
-		if (ahci_device_data_io(pccb->target, (u8 *) &fis, sizeof(fis),
-					user_buffer, transfer_size,
+		if (ahci_device_data_io(uc_priv, pccb->target, (u8 *)&fis,
+					sizeof(fis), user_buffer, transfer_size,
 					is_write)) {
 			debug("scsi_ahci: SCSI %s10 command failure.\n",
 			      is_write ? "WRITE" : "READ");
@@ -848,7 +852,7 @@ static int ata_scsiop_read_write(struct scsi_cmd *pccb, u8 is_write)
 		 * usually, one extra flush when the rare writes do happen.
 		 */
 		if (is_write) {
-			if (-EIO == ata_io_flush(pccb->target))
+			if (-EIO == ata_io_flush(uc_priv, pccb->target))
 				return -EIO;
 		}
 		user_buffer += transfer_size;
@@ -937,10 +941,10 @@ int scsi_exec(struct scsi_cmd *pccb)
 	switch (pccb->cmd[0]) {
 	case SCSI_READ16:
 	case SCSI_READ10:
-		ret = ata_scsiop_read_write(pccb, 0);
+		ret = ata_scsiop_read_write(uc_priv, pccb, 0);
 		break;
 	case SCSI_WRITE10:
-		ret = ata_scsiop_read_write(pccb, 1);
+		ret = ata_scsiop_read_write(uc_priv, pccb, 1);
 		break;
 	case SCSI_RD_CAPAC10:
 		ret = ata_scsiop_read_capacity10(uc_priv, pccb);
@@ -973,6 +977,7 @@ void scsi_low_level_init(int busdevfunc, struct udevice *dev)
 void scsi_low_level_init(int busdevfunc)
 #endif
 {
+	struct ahci_uc_priv *uc_priv;
 	int i;
 	u32 linkmap;
 
@@ -991,12 +996,13 @@ void scsi_low_level_init(int busdevfunc)
 	ahci_init_one(busdevfunc);
 # endif
 #endif
+	uc_priv = probe_ent;
 
-	linkmap = probe_ent->link_port_map;
+	linkmap = uc_priv->link_port_map;
 
 	for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
 		if (((linkmap >> i) & 0x01)) {
-			if (ahci_port_start(probe_ent, (u8) i)) {
+			if (ahci_port_start(uc_priv, (u8) i)) {
 				printf("Can not start port %d\n", i);
 				continue;
 			}
@@ -1007,39 +1013,41 @@ void scsi_low_level_init(int busdevfunc)
 #ifdef CONFIG_SCSI_AHCI_PLAT
 int ahci_init(void __iomem *base)
 {
+	struct ahci_uc_priv *uc_priv;
 	int i, rc = 0;
 	u32 linkmap;
 
 	probe_ent = malloc(sizeof(struct ahci_uc_priv));
 	if (!probe_ent) {
-		printf("%s: No memory for probe_ent\n", __func__);
+		printf("%s: No memory for uc_priv\n", __func__);
 		return -ENOMEM;
 	}
 
-	memset(probe_ent, 0, sizeof(struct ahci_uc_priv));
+	uc_priv = probe_ent;
+	memset(uc_priv, 0, sizeof(struct ahci_uc_priv));
 
-	probe_ent->host_flags = ATA_FLAG_SATA
+	uc_priv->host_flags = ATA_FLAG_SATA
 				| ATA_FLAG_NO_LEGACY
 				| ATA_FLAG_MMIO
 				| ATA_FLAG_PIO_DMA
 				| ATA_FLAG_NO_ATAPI;
-	probe_ent->pio_mask = 0x1f;
-	probe_ent->udma_mask = 0x7f;	/*Fixme,assume to support UDMA6 */
+	uc_priv->pio_mask = 0x1f;
+	uc_priv->udma_mask = 0x7f;	/*Fixme,assume to support UDMA6 */
 
-	probe_ent->mmio_base = base;
+	uc_priv->mmio_base = base;
 
 	/* initialize adapter */
-	rc = ahci_host_init(probe_ent);
+	rc = ahci_host_init(uc_priv);
 	if (rc)
 		goto err_out;
 
-	ahci_print_info(probe_ent);
+	ahci_print_info(uc_priv);
 
-	linkmap = probe_ent->link_port_map;
+	linkmap = uc_priv->link_port_map;
 
 	for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
 		if (((linkmap >> i) & 0x01)) {
-			if (ahci_port_start(probe_ent, (u8) i)) {
+			if (ahci_port_start(uc_priv, (u8) i)) {
 				printf("Can not start port %d\n", i);
 				continue;
 			}
@@ -1064,10 +1072,10 @@ void __weak scsi_init(void)
  * is the last write is difficult. Because writing to the disk in u-boot is
  * very rare, this flush command will be invoked after every block write.
  */
-static int ata_io_flush(u8 port)
+static int ata_io_flush(struct ahci_uc_priv *uc_priv, u8 port)
 {
 	u8 fis[20];
-	struct ahci_ioports *pp = &(probe_ent->port[port]);
+	struct ahci_ioports *pp = &(uc_priv->port[port]);
 	void __iomem *port_mmio = pp->port_mmio;
 	u32 cmd_fis_len = 5;	/* five dwords */
 
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 16/29] dm: scsi: Indent the confusing #ifdefs
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (14 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 15/29] dm: ahci: Refactor to avoid static variables Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:13   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 17/29] dm: ahci: Move common code for starting ports into a function Simon Glass
                   ` (12 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

These are very confusing without some sort of indentation. At some point
we will be able to remove them, but for now, indent them.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/scsi/scsi.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 2d0f81ad1f..e3d169045b 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -14,19 +14,19 @@
 #include <dm/uclass-internal.h>
 
 #if !defined(CONFIG_DM_SCSI)
-#ifdef CONFIG_SCSI_DEV_LIST
-#define SCSI_DEV_LIST CONFIG_SCSI_DEV_LIST
-#else
-#ifdef CONFIG_SATA_ULI5288
-
-#define SCSI_VEND_ID 0x10b9
-#define SCSI_DEV_ID  0x5288
-
-#elif !defined(CONFIG_SCSI_AHCI_PLAT)
-#error no scsi device defined
-#endif
-#define SCSI_DEV_LIST {SCSI_VEND_ID, SCSI_DEV_ID}
-#endif
+# ifdef CONFIG_SCSI_DEV_LIST
+#  define SCSI_DEV_LIST CONFIG_SCSI_DEV_LIST
+# else
+#  ifdef CONFIG_SATA_ULI5288
+
+#   define SCSI_VEND_ID 0x10b9
+#   define SCSI_DEV_ID  0x5288
+
+#  elif !defined(CONFIG_SCSI_AHCI_PLAT)
+#   error no scsi device defined
+#  endif
+# define SCSI_DEV_LIST {SCSI_VEND_ID, SCSI_DEV_ID}
+# endif
 #endif
 
 #if defined(CONFIG_PCI) && !defined(CONFIG_SCSI_AHCI_PLAT)
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 17/29] dm: ahci: Move common code for starting ports into a function
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (15 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 16/29] dm: scsi: Indent the confusing #ifdefs Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:13   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 18/29] dm: ahci: Unwind the confusing init code Simon Glass
                   ` (11 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

This code is duplicated. Create a ahci_start_ports() function to handle
this and call it from both places.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/ata/ahci.c | 45 ++++++++++++++++++++++-----------------------
 1 file changed, 22 insertions(+), 23 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 2e51b49790..4830bcdca0 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -971,6 +971,25 @@ int scsi_exec(struct scsi_cmd *pccb)
 
 }
 
+static int ahci_start_ports(struct ahci_uc_priv *uc_priv)
+{
+	u32 linkmap;
+	int i;
+
+	linkmap = uc_priv->link_port_map;
+
+	for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
+		if (((linkmap >> i) & 0x01)) {
+			if (ahci_port_start(uc_priv, (u8) i)) {
+				printf("Can not start port %d\n", i);
+				continue;
+			}
+		}
+	}
+
+	return 0;
+}
+
 #if defined(CONFIG_DM_SCSI)
 void scsi_low_level_init(int busdevfunc, struct udevice *dev)
 #else
@@ -978,8 +997,6 @@ void scsi_low_level_init(int busdevfunc)
 #endif
 {
 	struct ahci_uc_priv *uc_priv;
-	int i;
-	u32 linkmap;
 
 #ifndef CONFIG_SCSI_AHCI_PLAT
 # if defined(CONFIG_DM_PCI)
@@ -998,24 +1015,14 @@ void scsi_low_level_init(int busdevfunc)
 #endif
 	uc_priv = probe_ent;
 
-	linkmap = uc_priv->link_port_map;
-
-	for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
-		if (((linkmap >> i) & 0x01)) {
-			if (ahci_port_start(uc_priv, (u8) i)) {
-				printf("Can not start port %d\n", i);
-				continue;
-			}
-		}
-	}
+	ahci_start_ports(uc_priv);
 }
 
 #ifdef CONFIG_SCSI_AHCI_PLAT
 int ahci_init(void __iomem *base)
 {
 	struct ahci_uc_priv *uc_priv;
-	int i, rc = 0;
-	u32 linkmap;
+	int rc = 0;
 
 	probe_ent = malloc(sizeof(struct ahci_uc_priv));
 	if (!probe_ent) {
@@ -1043,16 +1050,8 @@ int ahci_init(void __iomem *base)
 
 	ahci_print_info(uc_priv);
 
-	linkmap = uc_priv->link_port_map;
+	rc = ahci_start_ports(uc_priv);
 
-	for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
-		if (((linkmap >> i) & 0x01)) {
-			if (ahci_port_start(uc_priv, (u8) i)) {
-				printf("Can not start port %d\n", i);
-				continue;
-			}
-		}
-	}
 err_out:
 	return rc;
 }
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 18/29] dm: ahci: Unwind the confusing init code
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (16 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 17/29] dm: ahci: Move common code for starting ports into a function Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 19/29] dm: ahci: Drop use of probe_ent Simon Glass
                   ` (10 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

Two AHCI drivers use SCSI with CONFIG_DM_SCSI. The SCSI uclass calls
scsi_low_level_init() which is implemented by ahci.c. If
CONFIG_SCSI_AHCI_PLAT is defined it does one thing and if it is not
it does something else.

We don't need to call through scsi_low_level_init() to get the init
completed. Instead, adjust the two drivers to call into AHCI directly.
Drop the post-probe init in the SCSI uclass. This means that driver model
doesn't need to use scsi_low_level_init(). It is a legacy function and
driver model should use a driver's probe() method instead.

While we are hear, add a comment to the top of the file explaining what
ahci.c does.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/ata/ahci.c         | 26 ++++++++++++++++++++------
 drivers/ata/dwc_ahci.c     |  6 +++++-
 drivers/ata/sata_ceva.c    |  3 ++-
 drivers/scsi/scsi-uclass.c |  8 --------
 include/ahci.h             | 16 ++++++++++++++++
 include/scsi.h             |  4 +---
 6 files changed, 44 insertions(+), 19 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 4830bcdca0..e9867656a9 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -6,6 +6,8 @@
  * SPDX-License-Identifier:	GPL-2.0+
  *
  * with the reference on libata and ahci drvier in kernel
+ *
+ * This driver provides a SCSI interface to SATA.
  */
 #include <common.h>
 
@@ -990,11 +992,8 @@ static int ahci_start_ports(struct ahci_uc_priv *uc_priv)
 	return 0;
 }
 
-#if defined(CONFIG_DM_SCSI)
-void scsi_low_level_init(int busdevfunc, struct udevice *dev)
-#else
+#ifndef CONFIG_DM_SCSI
 void scsi_low_level_init(int busdevfunc)
-#endif
 {
 	struct ahci_uc_priv *uc_priv;
 
@@ -1007,8 +1006,6 @@ void scsi_low_level_init(int busdevfunc)
 	if (ret)
 		return;
 	ahci_init_one(dev);
-# elif defined(CONFIG_DM_SCSI)
-	ahci_init_one(dev);
 # else
 	ahci_init_one(busdevfunc);
 # endif
@@ -1017,6 +1014,23 @@ void scsi_low_level_init(int busdevfunc)
 
 	ahci_start_ports(uc_priv);
 }
+#endif
+
+#ifndef CONFIG_SCSI_AHCI_PLAT
+# if defined(CONFIG_DM_PCI) || defined(CONFIG_DM_SCSI)
+int achi_init_one_dm(struct udevice *dev)
+{
+	return ahci_init_one(dev);
+}
+#endif
+#endif
+
+int achi_start_ports_dm(struct udevice *dev)
+{
+	struct ahci_uc_priv *uc_priv = probe_ent;
+
+	return ahci_start_ports(uc_priv);
+}
 
 #ifdef CONFIG_SCSI_AHCI_PLAT
 int ahci_init(void __iomem *base)
diff --git a/drivers/ata/dwc_ahci.c b/drivers/ata/dwc_ahci.c
index e634df5e3c..eadd77944c 100644
--- a/drivers/ata/dwc_ahci.c
+++ b/drivers/ata/dwc_ahci.c
@@ -81,7 +81,11 @@ static int dwc_ahci_probe(struct udevice *dev)
 		writel(val, priv->wrapper_base + TI_SATA_SYSCONFIG);
 	}
 
-	return ahci_init(priv->base);
+	ret = ahci_init(priv->base);
+	if (ret)
+		return ret;
+
+	return achi_start_ports_dm(dev);
 }
 
 static const struct udevice_id dwc_ahci_ids[] = {
diff --git a/drivers/ata/sata_ceva.c b/drivers/ata/sata_ceva.c
index 01f48810f3..2f7ab1c54b 100644
--- a/drivers/ata/sata_ceva.c
+++ b/drivers/ata/sata_ceva.c
@@ -117,7 +117,8 @@ static int sata_ceva_probe(struct udevice *dev)
 	struct scsi_platdata *plat = dev_get_uclass_platdata(dev);
 
 	ceva_init_sata(plat->base);
-	return 0;
+
+	return achi_init_one_dm(dev);
 }
 
 static const struct udevice_id sata_ceva_ids[] = {
diff --git a/drivers/scsi/scsi-uclass.c b/drivers/scsi/scsi-uclass.c
index e4ee44bb4c..40c5044f09 100644
--- a/drivers/scsi/scsi-uclass.c
+++ b/drivers/scsi/scsi-uclass.c
@@ -13,16 +13,8 @@
 #include <dm.h>
 #include <scsi.h>
 
-static int scsi_post_probe(struct udevice *dev)
-{
-	debug("%s: device %p\n", __func__, dev);
-	scsi_low_level_init(0, dev);
-	return 0;
-}
-
 UCLASS_DRIVER(scsi) = {
 	.id		= UCLASS_SCSI,
 	.name		= "scsi",
-	.post_probe	 = scsi_post_probe,
 	.per_device_platdata_auto_alloc_size = sizeof(struct scsi_platdata),
 };
diff --git a/include/ahci.h b/include/ahci.h
index 4262ab75c8..8f48178449 100644
--- a/include/ahci.h
+++ b/include/ahci.h
@@ -179,4 +179,20 @@ struct ahci_uc_priv {
 int ahci_init(void __iomem *base);
 int ahci_reset(void __iomem *base);
 
+/**
+ * achi_init_one_dm() - set up a single AHCI port
+ *
+ * @dev: Controller to init
+ * @return 0 if OK, -ve on error
+ */
+int achi_init_one_dm(struct udevice *dev);
+
+/**
+ * achi_start_ports_dm() - start all AHCI ports for a controller
+ *
+ * @dev: Controller containing ports to start
+ * @return 0 if OK, -ve on error
+ */
+int achi_start_ports_dm(struct udevice *dev);
+
 #endif
diff --git a/include/scsi.h b/include/scsi.h
index bc5be97465..cd1b240855 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -171,9 +171,7 @@ struct scsi_platdata {
 	unsigned long max_id;
 };
 
-#if defined(CONFIG_DM_SCSI)
-void scsi_low_level_init(int busdevfunc, struct udevice *dev);
-#else
+#ifndef CONFIG_DM_SCSI
 void scsi_low_level_init(int busdevfunc);
 void scsi_init(void);
 #endif
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 19/29] dm: ahci: Drop use of probe_ent
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (17 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 18/29] dm: ahci: Unwind the confusing init code Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 20/29] dm: scsi: Add operations Simon Glass
                   ` (9 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

With driver model we cannot have static data or assume that there is only
one device of each time. Adjust the code so that 'probe_ent' is not needed
with driver model. Add a new ahci_init_dm() function which can init AHCI
for driver model without re-allocating the uclass data. Move over the only
existing driver to use this new function.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/ata/ahci.c     | 75 +++++++++++++++++++++++++++++++-------------------
 drivers/ata/dwc_ahci.c |  2 +-
 include/ahci.h         |  8 ++++++
 3 files changed, 55 insertions(+), 30 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index e9867656a9..cadf685415 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -26,7 +26,9 @@
 
 static int ata_io_flush(struct ahci_uc_priv *uc_priv, u8 port);
 
+#ifndef CONFIG_DM_SCSI
 struct ahci_uc_priv *probe_ent = NULL;
+#endif
 
 #define writel_with_flush(a,b)	do { writel(a,b); readl(b); } while (0)
 
@@ -428,25 +430,16 @@ static void ahci_print_info(struct ahci_uc_priv *uc_priv)
 
 #ifndef CONFIG_SCSI_AHCI_PLAT
 # if defined(CONFIG_DM_PCI) || defined(CONFIG_DM_SCSI)
-static int ahci_init_one(struct udevice *dev)
+static int ahci_init_one(struct ahci_uc_priv *uc_priv, struct udevice *dev)
 # else
-static int ahci_init_one(pci_dev_t dev)
+static int ahci_init_one(struct ahci_uc_priv *uc_priv, pci_dev_t dev)
 # endif
 {
-	struct ahci_uc_priv *uc_priv;
 #if !defined(CONFIG_DM_SCSI)
 	u16 vendor;
 #endif
 	int rc;
 
-	probe_ent = malloc(sizeof(struct ahci_uc_priv));
-	if (!probe_ent) {
-		printf("%s: No memory for uc_priv\n", __func__);
-		return -ENOMEM;
-	}
-
-	uc_priv = probe_ent;
-	memset(uc_priv, 0, sizeof(struct ahci_uc_priv));
 	uc_priv->dev = dev;
 
 	uc_priv->host_flags = ATA_FLAG_SATA
@@ -998,6 +991,12 @@ void scsi_low_level_init(int busdevfunc)
 	struct ahci_uc_priv *uc_priv;
 
 #ifndef CONFIG_SCSI_AHCI_PLAT
+	probe_ent = calloc(1, sizeof(struct ahci_uc_priv));
+	if (!probe_ent) {
+		printf("%s: No memory for uc_priv\n", __func__);
+		return;
+	}
+	uc_priv = probe_ent;
 # if defined(CONFIG_DM_PCI)
 	struct udevice *dev;
 	int ret;
@@ -1005,12 +1004,13 @@ void scsi_low_level_init(int busdevfunc)
 	ret = dm_pci_bus_find_bdf(busdevfunc, &dev);
 	if (ret)
 		return;
-	ahci_init_one(dev);
+	ahci_init_one(uc_priv, dev);
 # else
-	ahci_init_one(busdevfunc);
+	ahci_init_one(uc_priv, busdevfunc);
 # endif
-#endif
+#else
 	uc_priv = probe_ent;
+#endif
 
 	ahci_start_ports(uc_priv);
 }
@@ -1020,32 +1020,24 @@ void scsi_low_level_init(int busdevfunc)
 # if defined(CONFIG_DM_PCI) || defined(CONFIG_DM_SCSI)
 int achi_init_one_dm(struct udevice *dev)
 {
-	return ahci_init_one(dev);
+	struct ahci_uc_priv *uc_priv = dev_get_uclass_priv(dev);
+
+	return ahci_init_one(uc_priv, dev);
 }
 #endif
 #endif
 
 int achi_start_ports_dm(struct udevice *dev)
 {
-	struct ahci_uc_priv *uc_priv = probe_ent;
+	struct ahci_uc_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	return ahci_start_ports(uc_priv);
 }
 
 #ifdef CONFIG_SCSI_AHCI_PLAT
-int ahci_init(void __iomem *base)
+static int ahci_init_common(struct ahci_uc_priv *uc_priv, void __iomem *base)
 {
-	struct ahci_uc_priv *uc_priv;
-	int rc = 0;
-
-	probe_ent = malloc(sizeof(struct ahci_uc_priv));
-	if (!probe_ent) {
-		printf("%s: No memory for uc_priv\n", __func__);
-		return -ENOMEM;
-	}
-
-	uc_priv = probe_ent;
-	memset(uc_priv, 0, sizeof(struct ahci_uc_priv));
+	int rc;
 
 	uc_priv->host_flags = ATA_FLAG_SATA
 				| ATA_FLAG_NO_LEGACY
@@ -1070,11 +1062,36 @@ err_out:
 	return rc;
 }
 
+#ifndef CONFIG_DM_SCSI
+int ahci_init(void __iomem *base)
+{
+	struct ahci_uc_priv *uc_priv;
+
+	probe_ent = malloc(sizeof(struct ahci_uc_priv));
+	if (!probe_ent) {
+		printf("%s: No memory for uc_priv\n", __func__);
+		return -ENOMEM;
+	}
+
+	uc_priv = probe_ent;
+	memset(uc_priv, 0, sizeof(struct ahci_uc_priv));
+
+	return ahci_init_common(uc_priv, base);
+}
+#endif
+
+int ahci_init_dm(struct udevice *dev, void __iomem *base)
+{
+	struct ahci_uc_priv *uc_priv = dev_get_uclass_priv(dev);
+
+	return ahci_init_common(uc_priv, base);
+}
+
 void __weak scsi_init(void)
 {
 }
 
-#endif
+#endif /* CONFIG_SCSI_AHCI_PLAT */
 
 /*
  * In the general case of generic rotating media it makes sense to have a
diff --git a/drivers/ata/dwc_ahci.c b/drivers/ata/dwc_ahci.c
index eadd77944c..401201717f 100644
--- a/drivers/ata/dwc_ahci.c
+++ b/drivers/ata/dwc_ahci.c
@@ -81,7 +81,7 @@ static int dwc_ahci_probe(struct udevice *dev)
 		writel(val, priv->wrapper_base + TI_SATA_SYSCONFIG);
 	}
 
-	ret = ahci_init(priv->base);
+	ret = ahci_init_dm(dev, priv->base);
 	if (ret)
 		return ret;
 
diff --git a/include/ahci.h b/include/ahci.h
index 8f48178449..648e56a4cf 100644
--- a/include/ahci.h
+++ b/include/ahci.h
@@ -195,4 +195,12 @@ int achi_init_one_dm(struct udevice *dev);
  */
 int achi_start_ports_dm(struct udevice *dev);
 
+/**
+ * ahci_init_dm() - init AHCI for a controller, finding all ports
+ *
+ * @dev: Device to init
+ * @return 0 if OK, -ve on error
+ */
+int ahci_init_dm(struct udevice *dev, void __iomem *base);
+
 #endif
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 20/29] dm: scsi: Add operations
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (18 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 19/29] dm: ahci: Drop use of probe_ent Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 21/29] dm: scsi: Add a device pointer to scan_exec(), scsi_bus_reset() Simon Glass
                   ` (8 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

Add operations for SCSI. These are not yet implemented, but we have the
struct.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 include/scsi.h | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/include/scsi.h b/include/scsi.h
index cd1b240855..d2fa8a5195 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -171,6 +171,26 @@ struct scsi_platdata {
 	unsigned long max_id;
 };
 
+/* Operations for SCSI */
+struct scsi_ops {
+	/**
+	 * exec() - execute a command
+	 *
+	 * @dev:	SCSI bus
+	 * @cmd:	Command to execute
+	 * @return 0 if OK, -ve on error
+	 */
+	int (*exec)(struct udevice *dev, struct scsi_cmd *cmd);
+
+	/**
+	 * bus_reset() - reset the bus
+	 *
+	 * @dev:	SCSI bus to reset
+	 * @return 0 if OK, -ve on error
+	 */
+	int (*bus_reset)(struct udevice *dev);
+};
+
 #ifndef CONFIG_DM_SCSI
 void scsi_low_level_init(int busdevfunc);
 void scsi_init(void);
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 21/29] dm: scsi: Add a device pointer to scan_exec(), scsi_bus_reset()
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (19 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 20/29] dm: scsi: Add operations Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 22/29] dm: scsi: Document and rename the scsi_scan() parameter Simon Glass
                   ` (7 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

With driver model these functions need a device pointer. Add one even
when CONFIG_DM_SCSI is not defined. This avoids having ugly conditional
function prototypes, When CONFIG_DM_SCSI is not defined we can just ignore
the pointer.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/arm/mach-omap2/sata.c  |  4 +++-
 cmd/scsi.c                  |  2 +-
 drivers/ata/ahci.c          | 13 ++++++++++---
 drivers/scsi/sandbox_scsi.c |  5 +++--
 drivers/scsi/scsi.c         | 31 +++++++++++++++++++------------
 include/scsi.h              |  4 ++--
 6 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/arch/arm/mach-omap2/sata.c b/arch/arm/mach-omap2/sata.c
index 0c8268905a..dc68896d1b 100644
--- a/arch/arm/mach-omap2/sata.c
+++ b/arch/arm/mach-omap2/sata.c
@@ -63,8 +63,10 @@ void scsi_init(void)
 	scsi_scan(1);
 }
 
-void scsi_bus_reset(void)
+int scsi_bus_reset(struct udevice *dev)
 {
 	ahci_reset((void __iomem *)DWC_AHSATA_BASE);
 	ahci_init((void __iomem *)DWC_AHSATA_BASE);
+
+	return 0;
 }
diff --git a/cmd/scsi.c b/cmd/scsi.c
index 4213ec8677..46171e5436 100644
--- a/cmd/scsi.c
+++ b/cmd/scsi.c
@@ -36,7 +36,7 @@ static int do_scsi(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 	case 2:
 		if (strncmp(argv[1], "res", 3) == 0) {
 			printf("\nReset SCSI\n");
-			scsi_bus_reset();
+			scsi_bus_reset(NULL);
 			ret = scsi_scan(1);
 			if (ret)
 				return CMD_RET_FAILURE;
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index cadf685415..c3b5f2af34 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -928,9 +928,14 @@ static int ata_scsiop_test_unit_ready(struct ahci_uc_priv *uc_priv,
 }
 
 
-int scsi_exec(struct scsi_cmd *pccb)
+int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
 {
-	struct ahci_uc_priv *uc_priv = probe_ent;
+	struct ahci_uc_priv *uc_priv;
+#ifdef CONFIG_DM_SCSI
+	uc_priv = dev_get_uclass_priv(dev);
+#else
+	uc_priv = probe_ent;
+#endif
 	int ret;
 
 	switch (pccb->cmd[0]) {
@@ -1130,7 +1135,9 @@ static int ata_io_flush(struct ahci_uc_priv *uc_priv, u8 port)
 }
 
 
-__weak void scsi_bus_reset(void)
+__weak int scsi_bus_reset(struct udevice *dev)
 {
 	/*Not implement*/
+
+	return 0;
 }
diff --git a/drivers/scsi/sandbox_scsi.c b/drivers/scsi/sandbox_scsi.c
index d943d1f9da..ac60ae01ca 100644
--- a/drivers/scsi/sandbox_scsi.c
+++ b/drivers/scsi/sandbox_scsi.c
@@ -11,15 +11,16 @@
 #include <common.h>
 #include <scsi.h>
 
-void scsi_bus_reset(void)
+int scsi_bus_reset(struct udevice *dev)
 {
+	return 0;
 }
 
 void scsi_init(void)
 {
 }
 
-int scsi_exec(struct scsi_cmd *pccb)
+int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
 {
 	return 0;
 }
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index e3d169045b..9232f3a824 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -151,6 +151,9 @@ static ulong scsi_read(struct blk_desc *block_dev, lbaint_t blknr,
 {
 #ifdef CONFIG_BLK
 	struct blk_desc *block_dev = dev_get_uclass_platdata(dev);
+	struct udevice *bdev = dev->parent;
+#else
+	struct udevice *bdev = NULL;
 #endif
 	lbaint_t start, blks;
 	uintptr_t buf_addr;
@@ -195,7 +198,7 @@ static ulong scsi_read(struct blk_desc *block_dev, lbaint_t blknr,
 		debug("scsi_read_ext: startblk " LBAF
 		      ", blccnt %x buffer %" PRIXPTR "\n",
 		      start, smallblks, buf_addr);
-		if (scsi_exec(pccb) != true) {
+		if (scsi_exec(bdev, pccb)) {
 			scsi_print_error(pccb);
 			blkcnt -= blks;
 			break;
@@ -224,6 +227,9 @@ static ulong scsi_write(struct blk_desc *block_dev, lbaint_t blknr,
 {
 #ifdef CONFIG_BLK
 	struct blk_desc *block_dev = dev_get_uclass_platdata(dev);
+	struct udevice *bdev = dev->parent;
+#else
+	struct udevice *bdev = NULL;
 #endif
 	lbaint_t start, blks;
 	uintptr_t buf_addr;
@@ -256,7 +262,7 @@ static ulong scsi_write(struct blk_desc *block_dev, lbaint_t blknr,
 		}
 		debug("%s: startblk " LBAF ", blccnt %x buffer %" PRIXPTR "\n",
 		      __func__, start, smallblks, buf_addr);
-		if (scsi_exec(pccb) != true) {
+		if (scsi_exec(bdev, pccb)) {
 			scsi_print_error(pccb);
 			blkcnt -= blks;
 			break;
@@ -350,8 +356,8 @@ static void scsi_ident_cpy(unsigned char *dest, unsigned char *src,
 	*dest = '\0';
 }
 
-static int scsi_read_capacity(struct scsi_cmd *pccb, lbaint_t *capacity,
-			      unsigned long *blksz)
+static int scsi_read_capacity(struct udevice *dev, struct scsi_cmd *pccb,
+			      lbaint_t *capacity, unsigned long *blksz)
 {
 	*capacity = 0;
 
@@ -362,7 +368,7 @@ static int scsi_read_capacity(struct scsi_cmd *pccb, lbaint_t *capacity,
 	pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */
 
 	pccb->datalen = 8;
-	if (scsi_exec(pccb) != true)
+	if (scsi_exec(dev, pccb) != true)
 		return 1;
 
 	*capacity = ((lbaint_t)pccb->pdata[0] << 24) |
@@ -387,7 +393,7 @@ static int scsi_read_capacity(struct scsi_cmd *pccb, lbaint_t *capacity,
 	pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */
 
 	pccb->datalen = 16;
-	if (scsi_exec(pccb) != true)
+	if (scsi_exec(dev, pccb) != true)
 		return 1;
 
 	*capacity = ((uint64_t)pccb->pdata[0] << 56) |
@@ -480,7 +486,8 @@ static void scsi_init_dev_desc(struct blk_desc *dev_desc, int devnum)
  *
  * Return: 0 on success, error value otherwise
  */
-static int scsi_detect_dev(int target, int lun, struct blk_desc *dev_desc)
+static int scsi_detect_dev(struct udevice *dev, int target, int lun,
+			   struct blk_desc *dev_desc)
 {
 	unsigned char perq, modi;
 	lbaint_t capacity;
@@ -492,7 +499,7 @@ static int scsi_detect_dev(int target, int lun, struct blk_desc *dev_desc)
 	pccb->pdata = (unsigned char *)&tempbuff;
 	pccb->datalen = 512;
 	scsi_setup_inquiry(pccb);
-	if (scsi_exec(pccb) != true) {
+	if (scsi_exec(dev, pccb) != true) {
 		if (pccb->contr_stat == SCSI_SEL_TIME_OUT) {
 			/*
 			  * selection timeout => assuming no
@@ -523,7 +530,7 @@ static int scsi_detect_dev(int target, int lun, struct blk_desc *dev_desc)
 
 	pccb->datalen = 0;
 	scsi_setup_test_unit_ready(pccb);
-	if (scsi_exec(pccb) != true) {
+	if (scsi_exec(dev, pccb) != true) {
 		if (dev_desc->removable) {
 			dev_desc->type = perq;
 			goto removable;
@@ -531,7 +538,7 @@ static int scsi_detect_dev(int target, int lun, struct blk_desc *dev_desc)
 		scsi_print_error(pccb);
 		return -EINVAL;
 	}
-	if (scsi_read_capacity(pccb, &capacity, &blksz)) {
+	if (scsi_read_capacity(dev, pccb, &capacity, &blksz)) {
 		scsi_print_error(pccb);
 		return -EINVAL;
 	}
@@ -561,7 +568,7 @@ static int do_scsi_scan_one(struct udevice *dev, int id, int lun, int mode)
 	 * size, number of blocks) and other parameters (ids, type, ...)
 	 */
 	scsi_init_dev_desc_priv(&bd);
-	if (scsi_detect_dev(id, lun, &bd))
+	if (scsi_detect_dev(dev, id, lun, &bd))
 		return -ENODEV;
 
 	/*
@@ -642,7 +649,7 @@ int scsi_scan(int mode)
 	scsi_max_devs = 0;
 	for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
 		for (lun = 0; lun < CONFIG_SYS_SCSI_MAX_LUN; lun++) {
-			ret = scsi_detect_dev(i, lun,
+			ret = scsi_detect_dev(NULL, i, lun,
 					      &scsi_dev_desc[scsi_max_devs]);
 			if (ret)
 				continue;
diff --git a/include/scsi.h b/include/scsi.h
index d2fa8a5195..af07dbe6db 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -196,8 +196,8 @@ void scsi_low_level_init(int busdevfunc);
 void scsi_init(void);
 #endif
 
-int scsi_exec(struct scsi_cmd *pccb);
-void scsi_bus_reset(void);
+int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb);
+int scsi_bus_reset(struct udevice *dev);
 
 /***************************************************************************
  * functions residing inside cmd_scsi.c
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 22/29] dm: scsi: Document and rename the scsi_scan() parameter
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (20 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 21/29] dm: scsi: Add a device pointer to scan_exec(), scsi_bus_reset() Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 23/29] dm: ahci: Create a local version of two SCSI functions Simon Glass
                   ` (6 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

The 'mode' parameter is actually a flag to determine whether to display
a list of devices found during the scan. Rename it to reflect this, add a
function comment and adjust callers to use a boolean.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c |  2 +-
 arch/arm/cpu/armv8/fsl-layerscape/soc.c   |  4 ++--
 board/highbank/highbank.c                 |  2 +-
 cmd/scsi.c                                |  4 ++--
 common/spl/spl_sata.c                     |  2 +-
 drivers/scsi/scsi.c                       | 20 ++++++++++----------
 include/scsi.h                            |  8 +++++---
 7 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c b/arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c
index 144f2c368d..e11d3a197d 100644
--- a/arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c
+++ b/arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c
@@ -36,7 +36,7 @@ int ls1021a_sata_init(void)
 	out_le32(&ccsr_ahci->ptc, AHCI_PORT_TRANS_CFG);
 
 	ahci_init((void __iomem *)AHCI_BASE_ADDR);
-	scsi_scan(0);
+	scsi_scan(false);
 
 	return 0;
 }
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/soc.c b/arch/arm/cpu/armv8/fsl-layerscape/soc.c
index 0943e833d7..aee1ffa7d4 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/soc.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/soc.c
@@ -225,7 +225,7 @@ int sata_init(void)
 	out_le32(&ccsr_ahci->axicc, AHCI_PORT_AXICC_CFG);
 
 	ahci_init((void __iomem *)CONFIG_SYS_SATA1);
-	scsi_scan(0);
+	scsi_scan(false);
 
 	return 0;
 }
@@ -244,7 +244,7 @@ int sata_init(void)
 	out_le32(&ccsr_ahci->axicc, AHCI_PORT_AXICC_CFG);
 
 	ahci_init((void __iomem *)CONFIG_SYS_SATA);
-	scsi_scan(0);
+	scsi_scan(false);
 
 	return 0;
 }
diff --git a/board/highbank/highbank.c b/board/highbank/highbank.c
index 55999ed226..1af2207867 100644
--- a/board/highbank/highbank.c
+++ b/board/highbank/highbank.c
@@ -67,7 +67,7 @@ void scsi_init(void)
 	cphy_disable_overrides();
 	if (reg & PWRDOM_STAT_SATA) {
 		ahci_init((void __iomem *)HB_AHCI_BASE);
-		scsi_scan(1);
+		scsi_scan(true);
 	}
 }
 #endif
diff --git a/cmd/scsi.c b/cmd/scsi.c
index 46171e5436..570971891e 100644
--- a/cmd/scsi.c
+++ b/cmd/scsi.c
@@ -37,7 +37,7 @@ static int do_scsi(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 		if (strncmp(argv[1], "res", 3) == 0) {
 			printf("\nReset SCSI\n");
 			scsi_bus_reset(NULL);
-			ret = scsi_scan(1);
+			ret = scsi_scan(true);
 			if (ret)
 				return CMD_RET_FAILURE;
 			return ret;
@@ -55,7 +55,7 @@ static int do_scsi(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 			return 0;
 		}
 		if (strncmp(argv[1], "scan", 4) == 0) {
-			ret = scsi_scan(1);
+			ret = scsi_scan(true);
 			if (ret)
 				return CMD_RET_FAILURE;
 			return ret;
diff --git a/common/spl/spl_sata.c b/common/spl/spl_sata.c
index 5476206131..bac11f64f1 100644
--- a/common/spl/spl_sata.c
+++ b/common/spl/spl_sata.c
@@ -34,7 +34,7 @@ static int spl_sata_load_image(struct spl_image_info *spl_image,
 		return err;
 	} else {
 		/* try to recognize storage devices immediately */
-		scsi_scan(0);
+		scsi_scan(false);
 		stor_dev = blk_get_devnum_by_type(IF_TYPE_SCSI, 0);
 		if (!stor_dev)
 			return -ENODEV;
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 9232f3a824..f3f8d31e1a 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -326,7 +326,7 @@ void scsi_init(void)
 #endif
 	bootstage_start(BOOTSTAGE_ID_ACCUM_SCSI, "ahci");
 	scsi_low_level_init(busdevfunc);
-	scsi_scan(1);
+	scsi_scan(true);
 	bootstage_accum(BOOTSTAGE_ID_ACCUM_SCSI);
 }
 #endif
@@ -555,7 +555,7 @@ removable:
  * to the user if mode = 1
  */
 #if defined(CONFIG_DM_SCSI)
-static int do_scsi_scan_one(struct udevice *dev, int id, int lun, int mode)
+static int do_scsi_scan_one(struct udevice *dev, int id, int lun, bool verbose)
 {
 	int ret;
 	struct udevice *bdev;
@@ -594,21 +594,21 @@ static int do_scsi_scan_one(struct udevice *dev, int id, int lun, int mode)
 	memcpy(&bdesc->revision, &bd.revision,	sizeof(bd.revision));
 	part_init(bdesc);
 
-	if (mode == 1) {
+	if (verbose) {
 		printf("  Device %d: ", 0);
 		dev_print(bdesc);
 	}
 	return 0;
 }
 
-int scsi_scan(int mode)
+int scsi_scan(bool verbose)
 {
 	unsigned char i, lun;
 	struct uclass *uc;
 	struct udevice *dev; /* SCSI controller */
 	int ret;
 
-	if (mode == 1)
+	if (verbose)
 		printf("scanning bus for devices...\n");
 
 	blk_unbind_all(IF_TYPE_SCSI);
@@ -630,18 +630,18 @@ int scsi_scan(int mode)
 
 		for (i = 0; i < plat->max_id; i++)
 			for (lun = 0; lun < plat->max_lun; lun++)
-				do_scsi_scan_one(dev, i, lun, mode);
+				do_scsi_scan_one(dev, i, lun, verbose);
 	}
 
 	return 0;
 }
 #else
-int scsi_scan(int mode)
+int scsi_scan(bool verbose)
 {
 	unsigned char i, lun;
 	int ret;
 
-	if (mode == 1)
+	if (verbose)
 		printf("scanning bus for devices...\n");
 	for (i = 0; i < CONFIG_SYS_SCSI_MAX_DEVICE; i++)
 		scsi_init_dev_desc(&scsi_dev_desc[i], i);
@@ -655,10 +655,10 @@ int scsi_scan(int mode)
 				continue;
 			part_init(&scsi_dev_desc[scsi_max_devs]);
 
-			if (mode == 1) {
+			if (verbose) {
 				printf("  Device %d: ", 0);
 				dev_print(&scsi_dev_desc[scsi_max_devs]);
-			} /* if mode */
+			}
 			scsi_max_devs++;
 		} /* next LUN */
 	}
diff --git a/include/scsi.h b/include/scsi.h
index af07dbe6db..20f6932602 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -199,10 +199,12 @@ void scsi_init(void);
 int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb);
 int scsi_bus_reset(struct udevice *dev);
 
-/***************************************************************************
- * functions residing inside cmd_scsi.c
+/**
+ * scsi_scan() - Scan all SCSI controllers for available devices
+ *
+ * @vebose: true to show information about each device found
  */
-int scsi_scan(int mode);
+int scsi_scan(bool verbose);
 
 #define SCSI_IDENTIFY					0xC0  /* not used */
 
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 23/29] dm: ahci: Create a local version of two SCSI functions
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (21 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 22/29] dm: scsi: Document and rename the scsi_scan() parameter Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 24/29] dm: scsi: Add operations for SCSI devices Simon Glass
                   ` (5 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

With driver model we need to define implementations of exec() and
bus_reset() separately for each SCSI driver. As a first step, create a
local version of each function in the AHCI driver and call each from its
global version.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/ata/ahci.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index c3b5f2af34..9c7b043aa2 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -928,7 +928,7 @@ static int ata_scsiop_test_unit_ready(struct ahci_uc_priv *uc_priv,
 }
 
 
-int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
+static int ahci_scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
 {
 	struct ahci_uc_priv *uc_priv;
 #ifdef CONFIG_DM_SCSI
@@ -1134,10 +1134,21 @@ static int ata_io_flush(struct ahci_uc_priv *uc_priv, u8 port)
 	return 0;
 }
 
+static int ahci_scsi_bus_reset(struct udevice *dev)
+{
+	/* Not implemented */
+
+	return 0;
+}
+
+int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
+{
+	return ahci_scsi_exec(dev, pccb);
+}
 
 __weak int scsi_bus_reset(struct udevice *dev)
 {
-	/*Not implement*/
+	return ahci_scsi_bus_reset(dev);
 
 	return 0;
 }
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 24/29] dm: scsi: Add operations for SCSI devices
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (22 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 23/29] dm: ahci: Create a local version of two SCSI functions Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 25/29] dm: scsi: Adjust return value of scsi_exec() Simon Glass
                   ` (4 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

The SCSI uclass currently has no operations. It just uses the global SCSI
functions. Fix this by adding operations to the only two drivers that use
the uclass, and replacing the global functions with those defined locally
in the SCSI code.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/ata/ahci.c         |  7 +++++++
 drivers/ata/dwc_ahci.c     |  1 +
 drivers/ata/sata_ceva.c    |  1 +
 drivers/scsi/scsi-uclass.c | 20 ++++++++++++++++++++
 include/scsi.h             | 28 +++++++++++++++++++++++-----
 5 files changed, 52 insertions(+), 5 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 9c7b043aa2..5a20b97c4b 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1141,6 +1141,12 @@ static int ahci_scsi_bus_reset(struct udevice *dev)
 	return 0;
 }
 
+#ifdef CONFIG_DM_SCSI
+struct scsi_ops scsi_ops = {
+	.exec		= ahci_scsi_exec,
+	.bus_reset	= ahci_scsi_bus_reset,
+};
+#else
 int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
 {
 	return ahci_scsi_exec(dev, pccb);
@@ -1152,3 +1158,4 @@ __weak int scsi_bus_reset(struct udevice *dev)
 
 	return 0;
 }
+#endif
diff --git a/drivers/ata/dwc_ahci.c b/drivers/ata/dwc_ahci.c
index 401201717f..f6147989b1 100644
--- a/drivers/ata/dwc_ahci.c
+++ b/drivers/ata/dwc_ahci.c
@@ -98,6 +98,7 @@ U_BOOT_DRIVER(dwc_ahci) = {
 	.id	= UCLASS_SCSI,
 	.of_match = dwc_ahci_ids,
 	.ofdata_to_platdata = dwc_ahci_ofdata_to_platdata,
+	.ops	= &scsi_ops,
 	.probe	= dwc_ahci_probe,
 	.priv_auto_alloc_size = sizeof(struct dwc_ahci_priv),
 	.flags = DM_FLAG_ALLOC_PRIV_DMA,
diff --git a/drivers/ata/sata_ceva.c b/drivers/ata/sata_ceva.c
index 2f7ab1c54b..9e0276b06d 100644
--- a/drivers/ata/sata_ceva.c
+++ b/drivers/ata/sata_ceva.c
@@ -145,6 +145,7 @@ U_BOOT_DRIVER(ceva_host_blk) = {
 	.name = "ceva_sata",
 	.id = UCLASS_SCSI,
 	.of_match = sata_ceva_ids,
+	.ops = &scsi_ops,
 	.probe = sata_ceva_probe,
 	.ofdata_to_platdata = sata_ceva_ofdata_to_platdata,
 };
diff --git a/drivers/scsi/scsi-uclass.c b/drivers/scsi/scsi-uclass.c
index 40c5044f09..31e8999297 100644
--- a/drivers/scsi/scsi-uclass.c
+++ b/drivers/scsi/scsi-uclass.c
@@ -13,6 +13,26 @@
 #include <dm.h>
 #include <scsi.h>
 
+int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
+{
+	struct scsi_ops *ops = scsi_get_ops(dev);
+
+	if (!ops->exec)
+		return -ENOSYS;
+
+	return ops->exec(dev, pccb);
+}
+
+int scsi_bus_reset(struct udevice *dev)
+{
+	struct scsi_ops *ops = scsi_get_ops(dev);
+
+	if (!ops->bus_reset)
+		return -ENOSYS;
+
+	return ops->bus_reset(dev);
+}
+
 UCLASS_DRIVER(scsi) = {
 	.id		= UCLASS_SCSI,
 	.name		= "scsi",
diff --git a/include/scsi.h b/include/scsi.h
index 20f6932602..9cdd13c795 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -191,12 +191,25 @@ struct scsi_ops {
 	int (*bus_reset)(struct udevice *dev);
 };
 
-#ifndef CONFIG_DM_SCSI
-void scsi_low_level_init(int busdevfunc);
-void scsi_init(void);
-#endif
+#define scsi_get_ops(dev)        ((struct scsi_ops *)(dev)->driver->ops)
+
+extern struct scsi_ops scsi_ops;
+
+/**
+ * scsi_exec() - execute a command
+ *
+ * @dev:	SCSI bus
+ * @cmd:	Command to execute
+ * @return 0 if OK, -ve on error
+ */
+int scsi_exec(struct udevice *dev, struct scsi_cmd *cmd);
 
-int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb);
+/**
+ * scsi_bus_reset() - reset the bus
+ *
+ * @dev:	SCSI bus to reset
+ * @return 0 if OK, -ve on error
+ */
 int scsi_bus_reset(struct udevice *dev);
 
 /**
@@ -206,6 +219,11 @@ int scsi_bus_reset(struct udevice *dev);
  */
 int scsi_scan(bool verbose);
 
+#ifndef CONFIG_DM_SCSI
+void scsi_low_level_init(int busdevfunc);
+void scsi_init(void);
+#endif
+
 #define SCSI_IDENTIFY					0xC0  /* not used */
 
 /* Hardware errors  */
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 25/29] dm: scsi: Adjust return value of scsi_exec()
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (23 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 24/29] dm: scsi: Add operations for SCSI devices Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 26/29] dm: scsi: Split out the bus scanning code Simon Glass
                   ` (3 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

Change this function to return an error number instead of true/false.
This allows us to return a proper error number.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/ata/ahci.c  | 6 +++---
 drivers/scsi/scsi.c | 8 ++++----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 5a20b97c4b..3528a1f3da 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -960,14 +960,14 @@ static int ahci_scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
 		break;
 	default:
 		printf("Unsupport SCSI command 0x%02x\n", pccb->cmd[0]);
-		return false;
+		return -ENOTSUPP;
 	}
 
 	if (ret) {
 		debug("SCSI command 0x%02x ret errno %d\n", pccb->cmd[0], ret);
-		return false;
+		return ret;
 	}
-	return true;
+	return 0;
 
 }
 
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index f3f8d31e1a..80c5ce699e 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -368,7 +368,7 @@ static int scsi_read_capacity(struct udevice *dev, struct scsi_cmd *pccb,
 	pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */
 
 	pccb->datalen = 8;
-	if (scsi_exec(dev, pccb) != true)
+	if (scsi_exec(dev, pccb))
 		return 1;
 
 	*capacity = ((lbaint_t)pccb->pdata[0] << 24) |
@@ -393,7 +393,7 @@ static int scsi_read_capacity(struct udevice *dev, struct scsi_cmd *pccb,
 	pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */
 
 	pccb->datalen = 16;
-	if (scsi_exec(dev, pccb) != true)
+	if (scsi_exec(dev, pccb))
 		return 1;
 
 	*capacity = ((uint64_t)pccb->pdata[0] << 56) |
@@ -499,7 +499,7 @@ static int scsi_detect_dev(struct udevice *dev, int target, int lun,
 	pccb->pdata = (unsigned char *)&tempbuff;
 	pccb->datalen = 512;
 	scsi_setup_inquiry(pccb);
-	if (scsi_exec(dev, pccb) != true) {
+	if (scsi_exec(dev, pccb)) {
 		if (pccb->contr_stat == SCSI_SEL_TIME_OUT) {
 			/*
 			  * selection timeout => assuming no
@@ -530,7 +530,7 @@ static int scsi_detect_dev(struct udevice *dev, int target, int lun,
 
 	pccb->datalen = 0;
 	scsi_setup_test_unit_ready(pccb);
-	if (scsi_exec(dev, pccb) != true) {
+	if (scsi_exec(dev, pccb)) {
 		if (dev_desc->removable) {
 			dev_desc->type = perq;
 			goto removable;
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 26/29] dm: scsi: Split out the bus scanning code
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (24 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 25/29] dm: scsi: Adjust return value of scsi_exec() Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 27/29] dm: ahci: Add a driver for SCSI on AHCI Simon Glass
                   ` (2 subsequent siblings)
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

Split out the code that scans a single SCSI bus into a separate function.
This will allow it to be used from driver model.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/scsi/scsi.c | 35 +++++++++++++++++++++++------------
 include/scsi.h      |  8 ++++++++
 2 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 80c5ce699e..2b87548bd3 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -601,9 +601,30 @@ static int do_scsi_scan_one(struct udevice *dev, int id, int lun, bool verbose)
 	return 0;
 }
 
+int scsi_scan_dev(struct udevice *dev, bool verbose)
+{
+	struct scsi_platdata *uc_plat; /* scsi controller platdata */
+	int ret;
+	int i;
+	int lun;
+
+	/* probe SCSI controller driver */
+	ret = device_probe(dev);
+	if (ret)
+		return ret;
+
+	/* Get controller platdata */
+	uc_plat = dev_get_uclass_platdata(dev);
+
+	for (i = 0; i < uc_plat->max_id; i++)
+		for (lun = 0; lun < uc_plat->max_lun; lun++)
+			do_scsi_scan_one(dev, i, lun, verbose);
+
+	return 0;
+}
+
 int scsi_scan(bool verbose)
 {
-	unsigned char i, lun;
 	struct uclass *uc;
 	struct udevice *dev; /* SCSI controller */
 	int ret;
@@ -618,19 +639,9 @@ int scsi_scan(bool verbose)
 		return ret;
 
 	uclass_foreach_dev(dev, uc) {
-		struct scsi_platdata *plat; /* scsi controller platdata */
-
-		/* probe SCSI controller driver */
-		ret = device_probe(dev);
+		ret = scsi_scan_dev(dev, verbose);
 		if (ret)
 			return ret;
-
-		/* Get controller platdata */
-		plat = dev_get_uclass_platdata(dev);
-
-		for (i = 0; i < plat->max_id; i++)
-			for (lun = 0; lun < plat->max_lun; lun++)
-				do_scsi_scan_one(dev, i, lun, verbose);
 	}
 
 	return 0;
diff --git a/include/scsi.h b/include/scsi.h
index 9cdd13c795..7173912de4 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -219,6 +219,14 @@ int scsi_bus_reset(struct udevice *dev);
  */
 int scsi_scan(bool verbose);
 
+/**
+ * scsi_scan_dev() - scan a SCSI bus and create devices
+ *
+ * @dev:	SCSI bus
+ * @verbose:	true to show information about each device found
+ */
+int scsi_scan_dev(struct udevice *dev, bool verbose);
+
 #ifndef CONFIG_DM_SCSI
 void scsi_low_level_init(int busdevfunc);
 void scsi_init(void);
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 27/29] dm: ahci: Add a driver for SCSI on AHCI
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (25 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 26/29] dm: scsi: Split out the bus scanning code Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 28/29] dm: scsi: Drop scsi_init() when driver model is used Simon Glass
  2017-06-05 19:15 ` [U-Boot] [PATCH 29/29] RFC: x86: Move link to use driver model for SCSI Simon Glass
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

Some AHCI drivers use SCSI under the hood. Rather than making the AHCI
driver be in the SCSI uclass it makes sense to have the AHCI device create
a SCSI device as a child. That way we can handle any AHCI-specific
operations rather than trying to pretend tha the device is just SCSI.

To handle this we need to provide a way for AHCI drivers to bind a SCSI
device as its child, and probe it. Add functions for this.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/ata/ahci.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 include/ahci.h     | 22 ++++++++++++++++++++++
 2 files changed, 74 insertions(+)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 3528a1f3da..c67a144f02 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -23,6 +23,8 @@
 #include <libata.h>
 #include <linux/ctype.h>
 #include <ahci.h>
+#include <dm/device-internal.h>
+#include <dm/lists.h>
 
 static int ata_io_flush(struct ahci_uc_priv *uc_priv, u8 port);
 
@@ -1142,10 +1144,60 @@ static int ahci_scsi_bus_reset(struct udevice *dev)
 }
 
 #ifdef CONFIG_DM_SCSI
+int ahci_bind_scsi(struct udevice *ahci_dev, struct udevice **devp)
+{
+	struct udevice *dev;
+	int ret;
+
+	ret = device_bind_driver(ahci_dev, "ahci_scsi", "ahci_scsi", &dev);
+	if (ret)
+		return ret;
+	*devp = dev;
+
+	return 0;
+}
+
+int ahci_probe_scsi(struct udevice *ahci_dev)
+{
+	struct ahci_uc_priv *uc_priv;
+	struct scsi_platdata *uc_plat;
+	struct udevice *dev;
+	int ret;
+
+	device_find_first_child(ahci_dev, &dev);
+	if (!dev)
+		return -ENODEV;
+	uc_plat = dev_get_uclass_platdata(dev);
+	uc_plat->base = (ulong)dm_pci_map_bar(ahci_dev, PCI_BASE_ADDRESS_5,
+					      PCI_REGION_MEM);
+	uc_plat->max_lun = 1;
+	uc_plat->max_id = 2;
+	uc_priv = dev_get_uclass_priv(dev);
+	ret = ahci_init_one(uc_priv, dev);
+	if (ret)
+		return ret;
+	ret = ahci_start_ports(uc_priv);
+	if (ret)
+		return ret;
+
+	debug("Scanning %s\n", dev->name);
+	ret = scsi_scan_dev(dev, true);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+
 struct scsi_ops scsi_ops = {
 	.exec		= ahci_scsi_exec,
 	.bus_reset	= ahci_scsi_bus_reset,
 };
+
+U_BOOT_DRIVER(ahci_scsi) = {
+	.name		= "ahci_scsi",
+	.id		= UCLASS_SCSI,
+	.ops		= &scsi_ops,
+};
 #else
 int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
 {
diff --git a/include/ahci.h b/include/ahci.h
index 648e56a4cf..746bff083a 100644
--- a/include/ahci.h
+++ b/include/ahci.h
@@ -203,4 +203,26 @@ int achi_start_ports_dm(struct udevice *dev);
  */
 int ahci_init_dm(struct udevice *dev, void __iomem *base);
 
+/**
+ * ahci_bind_scsi() - bind a new SCSI bus as a child
+ *
+ * Note that the SCSI bus device will itself bind block devices
+ *
+ * @ahci_dev: AHCI parent device
+ * @devp: Returns new SCSI bus device
+ * @return 0 if OK, -ve on error
+ */
+int ahci_bind_scsi(struct udevice *ahci_dev, struct udevice **devp);
+
+/**
+ * ahci_probe_scsi() - probe and scan the attached SCSI bus
+ *
+ * Note that the SCSI device will itself bind block devices for any storage
+ * devices it finds.
+ *
+ * @ahci_dev: AHCI parent device
+ * @return 0 if OK, -ve on error
+ */
+int ahci_probe_scsi(struct udevice *ahci_dev);
+
 #endif
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 28/29] dm: scsi: Drop scsi_init() when driver model is used
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (26 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 27/29] dm: ahci: Add a driver for SCSI on AHCI Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:14   ` Bin Meng
  2017-06-05 19:15 ` [U-Boot] [PATCH 29/29] RFC: x86: Move link to use driver model for SCSI Simon Glass
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

This function should not be used with driver model. Update the code to
reflect this.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/scsi/scsi.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 2b87548bd3..7ec7ecc295 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -29,7 +29,8 @@
 # endif
 #endif
 
-#if defined(CONFIG_PCI) && !defined(CONFIG_SCSI_AHCI_PLAT)
+#if defined(CONFIG_PCI) && !defined(CONFIG_SCSI_AHCI_PLAT) && \
+	!defined(CONFIG_DM_SCSI)
 const struct pci_device_id scsi_device_list[] = { SCSI_DEV_LIST };
 #endif
 static struct scsi_cmd tempccb;	/* temporary scsi command buffer */
@@ -274,7 +275,8 @@ static ulong scsi_write(struct blk_desc *block_dev, lbaint_t blknr,
 	return blkcnt;
 }
 
-#if defined(CONFIG_PCI) && !defined(CONFIG_SCSI_AHCI_PLAT)
+#if defined(CONFIG_PCI) && !defined(CONFIG_SCSI_AHCI_PLAT) && \
+	!defined(CONFIG_DM_SCSI)
 void scsi_init(void)
 {
 	int busdevfunc = -1;
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 29/29] RFC: x86: Move link to use driver model for SCSI
  2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
                   ` (27 preceding siblings ...)
  2017-06-05 19:15 ` [U-Boot] [PATCH 28/29] dm: scsi: Drop scsi_init() when driver model is used Simon Glass
@ 2017-06-05 19:15 ` Simon Glass
  2017-06-13  3:15   ` Bin Meng
  28 siblings, 1 reply; 62+ messages in thread
From: Simon Glass @ 2017-06-05 19:15 UTC (permalink / raw)
  To: u-boot

As a demonstration of how to use SCSI with driver model, move link over
to use this. This patch needs more work, but illustrates the concept.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/x86/cpu/ivybridge/sata.c     | 38 +++++++++++++++++++++++++++++++++++++-
 configs/chromebook_link_defconfig |  2 ++
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/arch/x86/cpu/ivybridge/sata.c b/arch/x86/cpu/ivybridge/sata.c
index 0f5e190425..5bbe65d442 100644
--- a/arch/x86/cpu/ivybridge/sata.c
+++ b/arch/x86/cpu/ivybridge/sata.c
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <ahci.h>
 #include <dm.h>
 #include <fdtdec.h>
 #include <asm/io.h>
@@ -208,6 +209,20 @@ static void bd82x6x_sata_enable(struct udevice *dev)
 	dm_pci_write_config16(dev, 0x90, map);
 }
 
+static int bd82x6x_sata_bind(struct udevice *dev)
+{
+	struct udevice *scsi_dev;
+	int ret;
+
+	if (gd->flags & GD_FLG_RELOC) {
+		ret = ahci_bind_scsi(dev, &scsi_dev);
+		if (ret)
+			return ret;
+	}
+
+	return 0;
+}
+
 static int bd82x6x_sata_probe(struct udevice *dev)
 {
 	struct udevice *pch;
@@ -219,8 +234,12 @@ static int bd82x6x_sata_probe(struct udevice *dev)
 
 	if (!(gd->flags & GD_FLG_RELOC))
 		bd82x6x_sata_enable(dev);
-	else
+	else {
 		bd82x6x_sata_init(dev, pch);
+		ret = ahci_probe_scsi(dev);
+		if (ret)
+			return ret;
+	}
 
 	return 0;
 }
@@ -234,5 +253,22 @@ U_BOOT_DRIVER(ahci_ivybridge_drv) = {
 	.name		= "ahci_ivybridge",
 	.id		= UCLASS_AHCI,
 	.of_match	= bd82x6x_ahci_ids,
+	.bind		= bd82x6x_sata_bind,
 	.probe		= bd82x6x_sata_probe,
 };
+
+static struct pci_device_id chromebook_ssd_supported[] = {
+	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_NM10_AHCI) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL,
+		     PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_MOBILE) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL,
+		     PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_SERIES6) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL,
+		     PCI_DEVICE_ID_INTEL_PANTHERPOINT_AHCI_MOBILE) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_AHCI) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL,
+		     PCI_DEVICE_ID_INTEL_WILDCATPOINT_AHCI) },
+	{},
+};
+
+U_BOOT_PCI_DEVICE(ahci_ivybridge_drv, chromebook_ssd_supported);
diff --git a/configs/chromebook_link_defconfig b/configs/chromebook_link_defconfig
index a463270514..503581dfce 100644
--- a/configs/chromebook_link_defconfig
+++ b/configs/chromebook_link_defconfig
@@ -40,6 +40,8 @@ CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_SCSI=y
+CONFIG_DM_SCSI=y
+CONFIG_BLK=y
 CONFIG_CPU=y
 CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_INTEL=y
-- 
2.13.0.506.g27d5fe0cd-goog

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 01/29] configs: Resync with savedefconfig
  2017-06-05 19:14 ` [U-Boot] [PATCH 01/29] configs: Resync with savedefconfig Simon Glass
@ 2017-06-13  1:21   ` Bin Meng
  2017-06-13 13:24     ` Tom Rini
  0 siblings, 1 reply; 62+ messages in thread
From: Bin Meng @ 2017-06-13  1:21 UTC (permalink / raw)
  To: u-boot

+Tom

Hi Tom,

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> Rsync all defconfig files using moveconfig.py
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  configs/Sinovoip_BPI_M2_Plus_defconfig           |  1 -
>  configs/UCP1020_SPIFLASH_defconfig               |  2 +-
>  configs/UCP1020_defconfig                        |  2 +-
>  configs/adp-ae3xx_defconfig                      |  6 +--
>  configs/adp-ag101p_defconfig                     |  6 +--
>  configs/am335x_baltos_defconfig                  |  4 +-
>  configs/am335x_boneblack_vboot_defconfig         |  1 -
>  configs/am335x_evm_defconfig                     |  1 -
>  configs/am335x_hs_evm_defconfig                  |  4 --
>  configs/am335x_igep003x_defconfig                |  6 +--
>  configs/am335x_shc_defconfig                     |  4 +-
>  configs/am335x_shc_ict_defconfig                 |  4 +-
>  configs/am335x_shc_netboot_defconfig             |  4 +-
>  configs/am335x_shc_prompt_defconfig              |  4 +-
>  configs/am335x_shc_sdboot_defconfig              |  4 +-
>  configs/am335x_shc_sdboot_prompt_defconfig       |  4 +-
>  configs/am335x_sl50_defconfig                    |  4 +-
>  configs/am43xx_evm_defconfig                     |  3 +-
>  configs/am43xx_evm_usbhost_boot_defconfig        |  1 -
>  configs/am43xx_hs_evm_defconfig                  |  3 +-
>  configs/am57xx_evm_defconfig                     |  5 +-
>  configs/am57xx_hs_evm_defconfig                  |  5 +-
>  configs/at91sam9263ek_norflash_boot_defconfig    |  2 +-
>  configs/at91sam9263ek_norflash_defconfig         |  2 +-
>  configs/bcm958622hr_defconfig                    |  2 +-
>  configs/birdland_bav335a_defconfig               |  2 +-
>  configs/birdland_bav335b_defconfig               |  2 +-
>  configs/blanche_defconfig                        |  1 -
>  configs/brppt1_mmc_defconfig                     |  2 +-
>  configs/brppt1_nand_defconfig                    |  2 +-
>  configs/brppt1_spi_defconfig                     |  2 +-
>  configs/brxre1_defconfig                         |  2 +-
>  configs/chiliboard_defconfig                     |  4 +-
>  configs/chromebook_minnie_defconfig              |  2 +-
>  configs/clearfog_defconfig                       |  2 -
>  configs/cm_fx6_defconfig                         |  2 +-
>  configs/cm_t335_defconfig                        |  2 +-
>  configs/cm_t43_defconfig                         |  2 +-
>  configs/colibri_imx7_defconfig                   |  2 +-
>  configs/colibri_vf_defconfig                     |  2 +-
>  configs/comtrend_ar5387un_ram_defconfig          | 66 ++++++++++-------------
>  configs/comtrend_ct5361_ram_defconfig            | 68 ++++++++++--------------
>  configs/comtrend_vr3032u_ram_defconfig           | 66 ++++++++++-------------
>  configs/dra7xx_evm_defconfig                     | 12 ++---
>  configs/dra7xx_hs_evm_defconfig                  |  9 ++--
>  configs/evb-ast2500_defconfig                    | 12 ++---
>  configs/evb-rk3399_defconfig                     |  5 +-
>  configs/firefly-rk3399_defconfig                 |  1 -
>  configs/gwventana_emmc_defconfig                 |  2 +-
>  configs/gwventana_gw5904_defconfig               |  2 +-
>  configs/gwventana_nand_defconfig                 |  2 +-
>  configs/huawei_hg556a_ram_defconfig              | 67 ++++++++++-------------
>  configs/imx6qdl_icore_mmc_defconfig              |  4 +-
>  configs/imx6qdl_icore_rqs_mmc_defconfig          |  2 +-
>  configs/k2e_evm_defconfig                        |  5 +-
>  configs/k2e_hs_evm_defconfig                     |  3 +-
>  configs/k2g_evm_defconfig                        |  5 +-
>  configs/k2g_hs_evm_defconfig                     |  6 +--
>  configs/k2hk_evm_defconfig                       |  4 +-
>  configs/k2hk_hs_evm_defconfig                    |  3 +-
>  configs/k2l_evm_defconfig                        |  4 +-
>  configs/ls2081ardb_defconfig                     | 13 ++---
>  configs/ls2088ardb_qspi_defconfig                | 13 ++---
>  configs/m53evk_defconfig                         |  2 +-
>  configs/mx51evk_defconfig                        |  2 +-
>  configs/mx53cx9020_defconfig                     |  2 +-
>  configs/mx53loco_defconfig                       |  2 +-
>  configs/mx6cuboxi_defconfig                      |  2 +-
>  configs/mx6sxsabresd_defconfig                   |  2 +-
>  configs/mx6sxsabresd_spl_defconfig               |  2 +-
>  configs/mx7dsabresd_defconfig                    |  2 +-
>  configs/nanopi_neo_air_defconfig                 |  2 +-
>  configs/nanopi_neo_defconfig                     |  2 +-
>  configs/netgear_cg3100d_ram_defconfig            | 66 ++++++++++-------------
>  configs/novena_defconfig                         |  2 +-
>  configs/omap3_logic_defconfig                    |  1 -
>  configs/opos6uldev_defconfig                     |  2 +-
>  configs/orangepi_2_defconfig                     |  1 -
>  configs/orangepi_lite_defconfig                  |  1 -
>  configs/orangepi_one_defconfig                   |  1 -
>  configs/orangepi_pc2_defconfig                   |  1 -
>  configs/orangepi_pc_defconfig                    |  1 -
>  configs/orangepi_pc_plus_defconfig               |  1 -
>  configs/orangepi_plus2e_defconfig                |  1 -
>  configs/orangepi_plus_defconfig                  |  1 -
>  configs/orangepi_zero_defconfig                  |  2 +-
>  configs/pcm051_rev1_defconfig                    |  2 +-
>  configs/pcm051_rev3_defconfig                    |  2 +-
>  configs/pengwyn_defconfig                        |  2 +-
>  configs/pepper_defconfig                         |  2 +-
>  configs/pine64_plus_defconfig                    |  3 +-
>  configs/puma-rk3399_defconfig                    |  1 -
>  configs/pxm2_defconfig                           |  2 +-
>  configs/r8a7795_salvator-x_defconfig             | 19 ++-----
>  configs/r8a7796_salvator-x_defconfig             | 20 ++-----
>  configs/rut_defconfig                            |  2 +-
>  configs/sagem_f at st1704_ram_defconfig             | 66 ++++++++++-------------
>  configs/sama5d2_xplained_mmc_defconfig           |  4 +-
>  configs/sama5d2_xplained_spiflash_defconfig      |  2 +-
>  configs/sandbox_defconfig                        |  9 ++--
>  configs/sandbox_flattree_defconfig               | 11 ++--
>  configs/sandbox_noblk_defconfig                  |  5 +-
>  configs/sandbox_spl_defconfig                    |  4 +-
>  configs/sfr_nb4-ser_ram_defconfig                | 66 ++++++++++-------------
>  configs/stm32f746-disco_defconfig                | 14 ++---
>  configs/tbs2910_defconfig                        |  2 +-
>  configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig |  2 +-
>  configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig |  2 +-
>  configs/xilinx_zynqmp_zcu102_defconfig           |  2 +-
>  configs/xilinx_zynqmp_zcu102_revB_defconfig      |  2 +-
>  110 files changed, 337 insertions(+), 499 deletions(-)
>

I believe a better way is to have someone schedule such house keeping
before each release. What do you think?

Regards,
Bin

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 02/29] Convert CONFIG_SCSI to Kconfig
  2017-06-05 19:14 ` [U-Boot] [PATCH 02/29] Convert CONFIG_SCSI to Kconfig Simon Glass
@ 2017-06-13  2:12   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  2:12 UTC (permalink / raw)
  To: u-boot

Hi Simon,

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> This converts the following to Kconfig:
>    CONFIG_SCSI
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  README                                      |  1 -
>  arch/Kconfig                                |  1 +
>  arch/arm/Kconfig                            | 10 ++++++++++
>  arch/arm/cpu/armv7/ls102xa/Kconfig          |  1 +
>  arch/arm/cpu/armv8/fsl-layerscape/Kconfig   |  2 ++
>  arch/arm/include/asm/arch-ls102xa/config.h  |  1 -
>  arch/arm/mach-mvebu/Kconfig                 |  2 ++
>  arch/arm/mach-omap2/omap5/Kconfig           |  2 ++
>  arch/powerpc/cpu/mpc85xx/Kconfig            |  1 +
>  arch/powerpc/cpu/mpc86xx/Kconfig            |  1 +
>  board/congatec/Kconfig                      |  1 +
>  board/dfi/Kconfig                           |  1 +
>  configs/A10-OLinuXino-Lime_defconfig        |  1 +
>  configs/A20-OLinuXino-Lime2_defconfig       |  1 +
>  configs/A20-OLinuXino-Lime_defconfig        |  1 +
>  configs/A20-OLinuXino_MICRO_defconfig       |  1 +
>  configs/A20-Olimex-SOM-EVB_defconfig        |  1 +
>  configs/Bananapi_M2_Ultra_defconfig         |  1 +
>  configs/Bananapi_defconfig                  |  1 +
>  configs/Bananapro_defconfig                 |  1 +
>  configs/Cubieboard2_defconfig               |  1 +
>  configs/Cubieboard_defconfig                |  1 +
>  configs/Cubietruck_defconfig                |  1 +
>  configs/Itead_Ibox_A20_defconfig            |  1 +
>  configs/Lamobo_R1_defconfig                 |  1 +
>  configs/Linksprite_pcDuino3_Nano_defconfig  |  1 +
>  configs/Linksprite_pcDuino3_defconfig       |  1 +
>  configs/MPC8544DS_defconfig                 |  1 +
>  configs/MPC8610HPCD_defconfig               |  1 +
>  configs/Marsboard_A10_defconfig             |  1 +
>  configs/Mele_A1000_defconfig                |  1 +
>  configs/Mele_M5_defconfig                   |  1 +
>  configs/Orangepi_defconfig                  |  1 +
>  configs/Orangepi_mini_defconfig             |  1 +
>  configs/PIP405_defconfig                    |  1 +
>  configs/Wits_Pro_A20_DKT_defconfig          |  1 +
>  configs/bayleybay_defconfig                 |  1 +
>  configs/chromebook_link64_defconfig         |  1 +
>  configs/chromebook_link_defconfig           |  1 +
>  configs/chromebook_samus_defconfig          |  1 +
>  configs/chromebox_panther_defconfig         |  1 +
>  configs/cm_t54_defconfig                    |  1 +
>  configs/controlcenterdc_defconfig           |  1 +
>  configs/cougarcanyon2_defconfig             |  1 +
>  configs/crownbay_defconfig                  |  1 +
>  configs/db-88f6820-gp_defconfig             |  1 +
>  configs/highbank_defconfig                  |  1 +
>  configs/ls1012aqds_qspi_defconfig           |  1 +
>  configs/ls2081ardb_defconfig                |  1 +
>  configs/minnowmax_defconfig                 |  1 +
>  configs/omap5_uevm_defconfig                |  1 +
>  configs/som-db5800-som-6867_defconfig       |  1 +
>  configs/xilinx_zynqmp_ep_defconfig          |  1 +
>  configs/xilinx_zynqmp_zcu102_defconfig      |  1 +
>  configs/xilinx_zynqmp_zcu102_revB_defconfig |  1 +
>  drivers/block/Kconfig                       |  9 +++++++++
>  include/config_cmd_all.h                    |  1 -
>  include/configs/MPC8544DS.h                 |  1 -
>  include/configs/MPC8572DS.h                 |  1 -
>  include/configs/MPC8610HPCD.h               |  1 -
>  include/configs/MPC8641HPCN.h               |  1 -
>  include/configs/PIP405.h                    |  1 -
>  include/configs/am57xx_evm.h                |  1 -
>  include/configs/cm_t54.h                    |  1 -
>  include/configs/controlcenterdc.h           |  1 -
>  include/configs/db-88f6820-gp.h             |  1 -
>  include/configs/dra7xx_evm.h                |  1 -
>  include/configs/efi-x86.h                   |  1 -
>  include/configs/galileo.h                   |  1 -
>  include/configs/highbank.h                  |  1 -
>  include/configs/ls1012aqds.h                |  1 -
>  include/configs/ls1012ardb.h                |  1 -
>  include/configs/ls1043aqds.h                |  1 -
>  include/configs/ls1046aqds.h                |  1 -
>  include/configs/ls1046ardb.h                |  1 -
>  include/configs/ls2080aqds.h                |  1 -
>  include/configs/ls2080ardb.h                |  1 -
>  include/configs/mvebu_armada-37xx.h         |  1 -
>  include/configs/mvebu_armada-8k.h           |  1 -
>  include/configs/omap5_uevm.h                |  1 -
>  include/configs/qemu-x86.h                  |  1 -
>  include/configs/sandbox.h                   |  1 -
>  include/configs/sunxi-common.h              |  1 -
>  include/configs/x86-common.h                |  1 -
>  include/configs/xilinx_zynqmp.h             |  1 -
>  scripts/config_whitelist.txt                |  1 -
>  86 files changed, 74 insertions(+), 32 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

But please see nits below.

> diff --git a/README b/README
> index 075d919df3..750b7351fe 100644
> --- a/README
> +++ b/README
> @@ -881,7 +881,6 @@ The following options need to be configured:
>                 CONFIG_CMD_RUN            run command in env variable
>                 CONFIG_CMD_SANDBOX      * sb command to access sandbox features
>                 CONFIG_CMD_SAVES        * save S record dump
> -               CONFIG_SCSI             * SCSI Support
>                 CONFIG_CMD_SDRAM        * print SDRAM configuration information
>                                           (requires CONFIG_CMD_I2C)
>                 CONFIG_CMD_SETGETDCR      Support for DCR Register access
> diff --git a/arch/Kconfig b/arch/Kconfig
> index e44767113d..1f874a3e32 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -79,6 +79,7 @@ config SANDBOX
>         imply FAT_WRITE
>         imply HASH_VERIFY
>         imply LZMA
> +       imply SCSI
>
>  config SH
>         bool "SuperH architecture"
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index deb7b24682..24bb0baeee 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -787,6 +787,7 @@ config TARGET_LS2080AQDS
>           The LS2080A Development System (QDS) is a high-performance
>           development platform that supports the QorIQ LS2080A
>           Layerscape Architecture processor.
> +       imply SCSI

nits: can we move the "imply SCSI" to before the "help" message?

>
>  config TARGET_LS2080ARDB
>         bool "Support ls2080ardb"
> @@ -801,6 +802,7 @@ config TARGET_LS2080ARDB
>           The LS2080A Reference design board (RDB) is a high-performance
>           development platform that supports the QorIQ LS2080A
>           Layerscape Architecture processor.
> +       imply SCSI
>

nits: can we move the "imply SCSI" to before the "help" message?

>  config TARGET_LS2081ARDB
>         bool "Support ls2081ardb"
> @@ -843,6 +845,7 @@ config TARGET_LS1012ARDB
>         select ARCH_LS1012A
>         select ARM64
>         select BOARD_LATE_INIT
> +       imply SCSI
>         help
>           Support for Freescale LS1012ARDB platform.
>           The LS1012A Reference design board (RDB) is a high-performance
> @@ -871,6 +874,7 @@ config TARGET_LS1021AQDS
>         select LS1_DEEP_SLEEP
>         select SYS_FSL_DDR
>         select BOARD_EARLY_INIT_F
> +       imply SCSI
>
>  config TARGET_LS1021ATWR
>         bool "Support ls1021atwr"
> @@ -883,6 +887,7 @@ config TARGET_LS1021ATWR
>         select ARCH_SUPPORT_PSCI
>         select LS1_DEEP_SLEEP
>         select BOARD_EARLY_INIT_F
> +       imply SCSI
>
>  config TARGET_LS1021AIOT
>         bool "Support ls1021aiot"
> @@ -893,6 +898,7 @@ config TARGET_LS1021AIOT
>         select SUPPORT_SPL
>         select ARCH_LS1021A
>         select ARCH_SUPPORT_PSCI
> +       imply SCSI
>         help
>           Support for Freescale LS1021AIOT platform.
>           The LS1021A Freescale board (IOT) is a high-performance
> @@ -907,6 +913,7 @@ config TARGET_LS1043AQDS
>         select BOARD_LATE_INIT
>         select SUPPORT_SPL
>         select BOARD_EARLY_INIT_F
> +       imply SCSI
>         help
>           Support for Freescale LS1043AQDS platform.
>
> @@ -918,6 +925,7 @@ config TARGET_LS1043ARDB
>         select BOARD_LATE_INIT
>         select SUPPORT_SPL
>         select BOARD_EARLY_INIT_F
> +       imply SCSI
>         help
>           Support for Freescale LS1043ARDB platform.
>
> @@ -930,6 +938,7 @@ config TARGET_LS1046AQDS
>         select SUPPORT_SPL
>         select DM_SPI_FLASH if DM_SPI
>         select BOARD_EARLY_INIT_F
> +       imply SCSI
>         help
>           Support for Freescale LS1046AQDS platform.
>           The LS1046A Development System (QDS) is a high-performance
> @@ -951,6 +960,7 @@ config TARGET_LS1046ARDB
>           The LS1046A Reference Design Board (RDB) is a high-performance
>           development platform that supports the QorIQ LS1046A
>           Layerscape Architecture processor.
> +       imply SCSI
>

nits: can we move the "imply SCSI" to before the "help" message?

>  config TARGET_H2200
>         bool "Support h2200"
> diff --git a/arch/arm/cpu/armv7/ls102xa/Kconfig b/arch/arm/cpu/armv7/ls102xa/Kconfig
> index b61f3cdcde..6a013b2183 100644
> --- a/arch/arm/cpu/armv7/ls102xa/Kconfig
> +++ b/arch/arm/cpu/armv7/ls102xa/Kconfig
> @@ -14,6 +14,7 @@ config ARCH_LS1021A
>         select SYS_FSL_HAS_SEC
>         select SYS_FSL_SEC_COMPAT_5
>         select SYS_FSL_SEC_LE
> +       imply SCSI
>
>  menu "LS102xA architecture"
>         depends on ARCH_LS1021A
> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
> index d8b285dcd7..5825f9b726 100644
> --- a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
> +++ b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
> @@ -26,6 +26,7 @@ config ARCH_LS1043A
>         select SYS_FSL_HAS_DDR4
>         select ARCH_EARLY_INIT_R
>         select BOARD_EARLY_INIT_F
> +       imply SCSI
>
>  config ARCH_LS1046A
>         bool
> @@ -46,6 +47,7 @@ config ARCH_LS1046A
>         select SYS_FSL_SRDS_2
>         select ARCH_EARLY_INIT_R
>         select BOARD_EARLY_INIT_F
> +       imply SCSI
>
>  config ARCH_LS2080A
>         bool
> diff --git a/arch/arm/include/asm/arch-ls102xa/config.h b/arch/arm/include/asm/arch-ls102xa/config.h
> index 5c4da0f0e3..fc954c5366 100644
> --- a/arch/arm/include/asm/arch-ls102xa/config.h
> +++ b/arch/arm/include/asm/arch-ls102xa/config.h
> @@ -81,7 +81,6 @@
>
>  /* SATA */
>  #define AHCI_BASE_ADDR                         (CONFIG_SYS_IMMR + 0x02200000)
> -#define CONFIG_SCSI
>  #define CONFIG_LIBATA
>  #define CONFIG_SCSI_AHCI
>  #define CONFIG_SCSI_AHCI_PLAT
> diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
> index 6ae54ef46a..89476a663a 100644
> --- a/arch/arm/mach-mvebu/Kconfig
> +++ b/arch/arm/mach-mvebu/Kconfig
> @@ -77,6 +77,7 @@ config TARGET_CLEARFOG
>  config TARGET_MVEBU_ARMADA_37XX
>         bool "Support Armada 37xx platforms"
>         select ARMADA_3700
> +       imply SCSI
>
>  config TARGET_DB_88F6720
>         bool "Support DB-88F6720 Armada 375"
> @@ -94,6 +95,7 @@ config TARGET_MVEBU_ARMADA_8K
>         bool "Support Armada 7k/8k platforms"
>         select ARMADA_8K
>         select BOARD_LATE_INIT
> +       imply SCSI
>
>  config TARGET_DB_MV784MP_GP
>         bool "Support db-mv784mp-gp"
> diff --git a/arch/arm/mach-omap2/omap5/Kconfig b/arch/arm/mach-omap2/omap5/Kconfig
> index 1a66abdeb2..08f45bc868 100644
> --- a/arch/arm/mach-omap2/omap5/Kconfig
> +++ b/arch/arm/mach-omap2/omap5/Kconfig
> @@ -25,12 +25,14 @@ config TARGET_DRA7XX_EVM
>         select DRA7XX
>         select TI_I2C_BOARD_DETECT
>         select PHYS_64BIT
> +       imply SCSI
>
>  config TARGET_AM57XX_EVM
>         bool "AM57XX"
>         select BOARD_LATE_INIT
>         select DRA7XX
>         select TI_I2C_BOARD_DETECT
> +       imply SCSI
>
>  endchoice
>

[snip]

> diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
> index 931defd2ae..b0e8602011 100644
> --- a/drivers/block/Kconfig
> +++ b/drivers/block/Kconfig
> @@ -19,6 +19,15 @@ config AHCI
>           operations at present. The block device interface has not been converted
>           to driver model.
>
> +config SCSI
> +       bool "Support SCSI controllers"
> +       help
> +         This enabled support for SCSI (Small Computer System Interface),

nits: enables

> +         a parallel interface widely used with storage peripherals such as
> +         hard drives and optical drives. The SCSI standards define physical
> +         interfaces as well as protocols for controlling devices and
> +         tranferring data.
> +
>  config DM_SCSI
>         bool "Support SCSI controllers with driver model"
>         depends on BLK

[snip]

Regards,
Bin

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 03/29] scsi: Drop sym53c8xx driver
  2017-06-05 19:14 ` [U-Boot] [PATCH 03/29] scsi: Drop sym53c8xx driver Simon Glass
@ 2017-06-13  2:12   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  2:12 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> This driver is for a PowerPC board that will likely be removed soon.
> Rather than converting it to driver model, drop it.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  README                       |   5 -
>  board/mpl/pip405/README      |   5 +-
>  common/scsi.c                |   9 +-
>  configs/PIP405_defconfig     |   1 -
>  drivers/block/Makefile       |   1 -
>  drivers/block/sym53c8xx.c    | 851 -------------------------------------------
>  include/configs/PIP405.h     |   9 -
>  scripts/config_whitelist.txt |   2 -
>  8 files changed, 3 insertions(+), 880 deletions(-)
>  delete mode 100644 drivers/block/sym53c8xx.c
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 04/29] scsi: Drop scsi_print_error()
  2017-06-05 19:14 ` [U-Boot] [PATCH 04/29] scsi: Drop scsi_print_error() Simon Glass
@ 2017-06-13  2:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  2:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> This function is only defined by one driver and is empty. Move it into
> the SCSI implementation itself. We could remove it, but it should be
> useful for debugging.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  common/scsi.c                | 5 +++++
>  drivers/block/ahci.c         | 5 -----
>  drivers/block/sandbox_scsi.c | 4 ----
>  include/scsi.h               | 1 -
>  4 files changed, 5 insertions(+), 10 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 05/29] Convert CONFIG_CMD_SATA to Kconfig
  2017-06-05 19:14 ` [U-Boot] [PATCH 05/29] Convert CONFIG_CMD_SATA to Kconfig Simon Glass
@ 2017-06-13  2:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  2:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> This converts the following to Kconfig:
>    CONFIG_CMD_SATA
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  arch/Kconfig                                       |  1 +
>  arch/arm/cpu/armv7/mx6/Kconfig                     |  4 ++
>  arch/arm/mach-mvebu/Kconfig                        |  2 +
>  arch/powerpc/cpu/mpc83xx/Kconfig                   |  1 +
>  arch/powerpc/cpu/mpc85xx/Kconfig                   | 45 ++++++++++++++++++++++
>  cmd/Kconfig                                        | 12 ++++++
>  configs/MPC8315ERDB_defconfig                      |  1 +
>  configs/MPC8349ITX_LOWBOOT_defconfig               |  1 +
>  configs/MPC8349ITX_defconfig                       |  1 +
>  configs/MPC837XERDB_defconfig                      |  1 +
>  configs/canyonlands_defconfig                      |  1 +
>  configs/cgtqmx6eval_defconfig                      |  1 +
>  configs/cm_fx6_defconfig                           |  1 +
>  .../controlcenterd_36BIT_SDCARD_DEVELOP_defconfig  |  1 +
>  configs/controlcenterd_36BIT_SDCARD_defconfig      |  1 +
>  configs/db-mv784mp-gp_defconfig                    |  1 +
>  configs/m53evk_defconfig                           |  1 +
>  configs/mx53loco_defconfig                         |  1 +
>  configs/mx6qsabrelite_defconfig                    |  1 +
>  configs/nitrogen6q2g_defconfig                     |  1 +
>  configs/nitrogen6q_defconfig                       |  1 +
>  configs/novena_defconfig                           |  1 +
>  configs/tbs2910_defconfig                          |  1 +
>  configs/udoo_defconfig                             |  1 +
>  configs/wandboard_defconfig                        |  1 +
>  include/configs/MPC8315ERDB.h                      |  1 -
>  include/configs/MPC8349ITX.h                       |  4 --
>  include/configs/MPC837XEMDS.h                      |  1 -
>  include/configs/MPC837XERDB.h                      |  1 -
>  include/configs/MPC8536DS.h                        |  1 -
>  include/configs/P1010RDB.h                         |  1 -
>  include/configs/P1022DS.h                          |  1 -
>  include/configs/P2041RDB.h                         |  1 -
>  include/configs/P4080DS.h                          |  1 -
>  include/configs/T102xQDS.h                         |  1 -
>  include/configs/T1040QDS.h                         |  1 -
>  include/configs/T104xRDB.h                         |  1 -
>  include/configs/T208xQDS.h                         |  1 -
>  include/configs/T208xRDB.h                         |  1 -
>  include/configs/T4240QDS.h                         |  1 -
>  include/configs/T4240RDB.h                         |  2 -
>  include/configs/UCP1020.h                          |  1 -
>  include/configs/advantech_dms-ba16.h               |  1 -
>  include/configs/apalis_imx6.h                      |  4 --
>  include/configs/canyonlands.h                      |  1 -
>  include/configs/cgtqmx6eval.h                      |  1 -
>  include/configs/cm_fx6.h                           |  1 -
>  include/configs/controlcenterd.h                   |  1 -
>  include/configs/corenet_ds.h                       |  1 -
>  include/configs/cyrus.h                            |  1 -
>  include/configs/db-mv784mp-gp.h                    |  1 -
>  include/configs/gw_ventana.h                       |  1 -
>  include/configs/m53evk.h                           |  1 -
>  include/configs/mx53loco.h                         |  1 -
>  include/configs/nitrogen6x.h                       |  4 --
>  include/configs/novena.h                           |  1 -
>  include/configs/ot1200.h                           |  4 --
>  include/configs/p1_p2_rdb_pc.h                     |  1 -
>  include/configs/p1_twr.h                           |  1 -
>  include/configs/sandbox.h                          |  1 -
>  include/configs/t4qds.h                            |  1 -
>  include/configs/tbs2910.h                          |  1 -
>  include/configs/theadorable.h                      |  1 -
>  include/configs/udoo.h                             |  1 -
>  include/configs/wandboard.h                        |  1 -
>  scripts/config_whitelist.txt                       |  1 -
>  66 files changed, 84 insertions(+), 54 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 06/29] Kconfig: Add CONFIG_SATA to enable SATA
  2017-06-05 19:14 ` [U-Boot] [PATCH 06/29] Kconfig: Add CONFIG_SATA to enable SATA Simon Glass
@ 2017-06-13  2:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  2:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> At present CONFIG_CMD_SATA enables the 'sata' command which also brings
> in SATA support. Some boards may wish to enable SATA without the command.
> Add a separate CONFIG to permit this.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  api/api_storage.c                         |  2 +-
>  arch/arm/cpu/armv7/mx6/clock.c            |  6 +++---
>  arch/arm/imx-common/Makefile              |  2 +-
>  arch/arm/imx-common/cpu.c                 |  2 +-
>  arch/powerpc/cpu/mpc85xx/cpu_init.c       |  2 +-
>  board/advantech/dms-ba16/dms-ba16.c       |  2 +-
>  board/bachmann/ot1200/ot1200.c            |  2 +-
>  board/boundary/nitrogen6x/nitrogen6x.c    |  2 +-
>  board/congatec/cgtqmx6eval/cgtqmx6eval.c  |  2 +-
>  board/gateworks/gw_ventana/gw_ventana.c   |  2 +-
>  board/kosagi/novena/novena.c              |  2 +-
>  board/toradex/apalis_imx6/apalis_imx6.c   |  2 +-
>  board/toradex/colibri_imx6/colibri_imx6.c |  2 +-
>  board/udoo/udoo.c                         |  2 +-
>  board/wandboard/wandboard.c               |  2 +-
>  cmd/Kconfig                               |  1 +
>  common/Makefile                           |  2 +-
>  common/splash_source.c                    |  2 +-
>  drivers/block/Kconfig                     | 15 ++++++++++++++-
>  fs/fat/fat.c                              |  2 +-
>  include/config_distro_bootcmd.h           |  6 +++---
>  include/config_fallbacks.h                |  2 +-
>  22 files changed, 39 insertions(+), 25 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 07/29] sata: Move drivers into new drivers/ata directory
  2017-06-05 19:14 ` [U-Boot] [PATCH 07/29] sata: Move drivers into new drivers/ata directory Simon Glass
@ 2017-06-13  2:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  2:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> At present we have the SATA and PATA drivers mixed up in the drivers/block
> directory. It is better to split them out into their own place. Use
> drivers/ata which is what Linux does.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  arch/powerpc/cpu/mpc85xx/cpu_init.c   |  2 +-
>  common/Makefile                       |  1 -
>  drivers/Kconfig                       |  2 ++
>  drivers/Makefile                      |  3 +-
>  drivers/ata/Kconfig                   | 62 +++++++++++++++++++++++++++++++++++
>  drivers/ata/Makefile                  | 22 +++++++++++++
>  drivers/{block => ata}/ahci-uclass.c  |  0
>  drivers/{block => ata}/ahci.c         |  0
>  drivers/{block => ata}/dwc_ahci.c     |  0
>  drivers/{block => ata}/dwc_ahsata.c   |  0
>  drivers/{block => ata}/dwc_ahsata.h   |  0
>  drivers/{block => ata}/fsl_sata.c     |  0
>  drivers/{block => ata}/fsl_sata.h     |  0
>  drivers/{block => ata}/libata.c       |  0
>  drivers/{block => ata}/mvsata_ide.c   |  0
>  drivers/{block => ata}/mxc_ata.c      |  0
>  {common => drivers/ata}/sata.c        |  0
>  drivers/{block => ata}/sata_ceva.c    |  0
>  drivers/{block => ata}/sata_dwc.c     |  0
>  drivers/{block => ata}/sata_dwc.h     |  0
>  drivers/{block => ata}/sata_mv.c      |  0
>  drivers/{block => ata}/sata_sandbox.c |  0
>  drivers/{block => ata}/sata_sil.c     |  0
>  drivers/{block => ata}/sata_sil.h     |  0
>  drivers/{block => ata}/sata_sil3114.c |  0
>  drivers/{block => ata}/sata_sil3114.h |  0
>  drivers/block/Kconfig                 | 45 -------------------------
>  drivers/block/Makefile                | 16 +--------
>  28 files changed, 90 insertions(+), 63 deletions(-)
>  create mode 100644 drivers/ata/Kconfig
>  create mode 100644 drivers/ata/Makefile
>  rename drivers/{block => ata}/ahci-uclass.c (100%)
>  rename drivers/{block => ata}/ahci.c (100%)
>  rename drivers/{block => ata}/dwc_ahci.c (100%)
>  rename drivers/{block => ata}/dwc_ahsata.c (100%)
>  rename drivers/{block => ata}/dwc_ahsata.h (100%)
>  rename drivers/{block => ata}/fsl_sata.c (100%)
>  rename drivers/{block => ata}/fsl_sata.h (100%)
>  rename drivers/{block => ata}/libata.c (100%)
>  rename drivers/{block => ata}/mvsata_ide.c (100%)
>  rename drivers/{block => ata}/mxc_ata.c (100%)
>  rename {common => drivers/ata}/sata.c (100%)
>  rename drivers/{block => ata}/sata_ceva.c (100%)
>  rename drivers/{block => ata}/sata_dwc.c (100%)
>  rename drivers/{block => ata}/sata_dwc.h (100%)
>  rename drivers/{block => ata}/sata_mv.c (100%)
>  rename drivers/{block => ata}/sata_sandbox.c (100%)
>  rename drivers/{block => ata}/sata_sil.c (100%)
>  rename drivers/{block => ata}/sata_sil.h (100%)
>  rename drivers/{block => ata}/sata_sil3114.c (100%)
>  rename drivers/{block => ata}/sata_sil3114.h (100%)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 08/29] scsi: Move drivers into new drivers/scsi directory
  2017-06-05 19:14 ` [U-Boot] [PATCH 08/29] scsi: Move drivers into new drivers/scsi directory Simon Glass
@ 2017-06-13  2:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  2:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> At present we have the SCSI drivers in the drivers/block and common/
> directories. It is better to split them out into their own place. Use
> drivers/scsi which is what Linux does.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  common/Makefile                        |  4 ----
>  drivers/Kconfig                        |  2 ++
>  drivers/Makefile                       |  3 ++-
>  drivers/block/Kconfig                  | 18 ------------------
>  drivers/block/Makefile                 |  2 +-
>  drivers/scsi/Kconfig                   | 17 +++++++++++++++++
>  drivers/scsi/Makefile                  | 19 +++++++++++++++++++
>  drivers/{block => scsi}/sandbox_scsi.c |  0
>  drivers/{block => scsi}/scsi-uclass.c  |  0
>  {common => drivers/scsi}/scsi.c        |  0
>  10 files changed, 41 insertions(+), 24 deletions(-)
>  create mode 100644 drivers/scsi/Kconfig
>  create mode 100644 drivers/scsi/Makefile
>  rename drivers/{block => scsi}/sandbox_scsi.c (100%)
>  rename drivers/{block => scsi}/scsi-uclass.c (100%)
>  rename {common => drivers/scsi}/scsi.c (100%)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 09/29] dm: scsi: Rearrange header file for driver model
  2017-06-05 19:14 ` [U-Boot] [PATCH 09/29] dm: scsi: Rearrange header file for driver model Simon Glass
@ 2017-06-13  3:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> Put the driver-model declarations first since we are migrating to that.
> Also drop scsi_init() when driver model is used.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  include/scsi.h | 34 ++++++++++++++--------------------
>  1 file changed, 14 insertions(+), 20 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 10/29] dm: scsi: Rename struct SCSI_cmd_block to struct scsi_cmd
  2017-06-05 19:14 ` [U-Boot] [PATCH 10/29] dm: scsi: Rename struct SCSI_cmd_block to struct scsi_cmd Simon Glass
@ 2017-06-13  3:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> This name should be lower case. Also the _block suffix is superfluous.
> Rename it.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/usb/emul/sandbox_flash.c | 2 +-
>  include/scsi.h                   | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 11/29] dm: scsi: Drop the ccb typedef
  2017-06-05 19:14 ` [U-Boot] [PATCH 11/29] dm: scsi: Drop the ccb typedef Simon Glass
@ 2017-06-13  3:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> We should not be using typedefs in U-Boot and 'ccb' is a pretty short
> name. It is also used with variables. Drop the typedef and use 'struct'
> instead.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  common/usb_storage.c        | 44 ++++++++++++++++++++++----------------------
>  drivers/ata/ahci.c          | 12 ++++++------
>  drivers/scsi/sandbox_scsi.c |  2 +-
>  drivers/scsi/scsi.c         | 23 ++++++++++++-----------
>  include/scsi.h              |  6 +++---
>  5 files changed, 44 insertions(+), 43 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 12/29] dm: scsi: Use the uclass platform data
  2017-06-05 19:14 ` [U-Boot] [PATCH 12/29] dm: scsi: Use the uclass platform data Simon Glass
@ 2017-06-13  3:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> At present the two driver-model SCSI drivers use device platform data to
> store information that relates to the uclass. It is better to use uclass
> platform data in this situation. Update the code to do this.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/ata/ahci.c         | 2 +-
>  drivers/ata/dwc_ahci.c     | 3 +--
>  drivers/ata/sata_ceva.c    | 5 ++---
>  drivers/scsi/scsi-uclass.c | 1 +
>  drivers/scsi/scsi.c        | 2 +-
>  5 files changed, 6 insertions(+), 7 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 13/29] dm: ahci: Rename struct ahci_probe_ent
  2017-06-05 19:15 ` [U-Boot] [PATCH 13/29] dm: ahci: Rename struct ahci_probe_ent Simon Glass
@ 2017-06-13  3:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> This is not a very useful name since once it is probed it still hangs
> around. With driver model we will use uclass data for this, so rename the
> struct.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  board/highbank/ahci.c    |  2 +-
>  drivers/ata/ahci.c       | 16 +++++------
>  drivers/ata/dwc_ahsata.c | 74 ++++++++++++++++++++++++------------------------
>  include/ahci.h           | 13 ++++++++-
>  4 files changed, 58 insertions(+), 47 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 14/29] dm: sata: Move ataid into struct ahci_uc_priv
  2017-06-05 19:15 ` [U-Boot] [PATCH 14/29] dm: sata: Move ataid into struct ahci_uc_priv Simon Glass
@ 2017-06-13  3:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> This array relates to the AHCI controller so should be exist out on its
> own in the file. Move it into the structure. Adjust functions that need
> access to this to take the structure as a parameter.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/ata/ahci.c | 50 +++++++++++++++++++++++++++-----------------------
>  include/ahci.h     |  1 +
>  2 files changed, 28 insertions(+), 23 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 15/29] dm: ahci: Refactor to avoid static variables
  2017-06-05 19:15 ` [U-Boot] [PATCH 15/29] dm: ahci: Refactor to avoid static variables Simon Glass
@ 2017-06-13  3:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> With driver model we need each device to have its own state. As a step
> towards this, restrict use of the global 'probe_ent' to just a few places
> in the file. This will allow us to add driver-model functions which can
> pass the correct data around.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/ata/ahci.c | 144 ++++++++++++++++++++++++++++-------------------------
>  1 file changed, 76 insertions(+), 68 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 16/29] dm: scsi: Indent the confusing #ifdefs
  2017-06-05 19:15 ` [U-Boot] [PATCH 16/29] dm: scsi: Indent the confusing #ifdefs Simon Glass
@ 2017-06-13  3:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> These are very confusing without some sort of indentation. At some point
> we will be able to remove them, but for now, indent them.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/scsi/scsi.c | 26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 17/29] dm: ahci: Move common code for starting ports into a function
  2017-06-05 19:15 ` [U-Boot] [PATCH 17/29] dm: ahci: Move common code for starting ports into a function Simon Glass
@ 2017-06-13  3:13   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:13 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> This code is duplicated. Create a ahci_start_ports() function to handle
> this and call it from both places.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/ata/ahci.c | 45 ++++++++++++++++++++++-----------------------
>  1 file changed, 22 insertions(+), 23 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 18/29] dm: ahci: Unwind the confusing init code
  2017-06-05 19:15 ` [U-Boot] [PATCH 18/29] dm: ahci: Unwind the confusing init code Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> Two AHCI drivers use SCSI with CONFIG_DM_SCSI. The SCSI uclass calls
> scsi_low_level_init() which is implemented by ahci.c. If
> CONFIG_SCSI_AHCI_PLAT is defined it does one thing and if it is not
> it does something else.
>
> We don't need to call through scsi_low_level_init() to get the init
> completed. Instead, adjust the two drivers to call into AHCI directly.
> Drop the post-probe init in the SCSI uclass. This means that driver model
> doesn't need to use scsi_low_level_init(). It is a legacy function and
> driver model should use a driver's probe() method instead.
>
> While we are hear, add a comment to the top of the file explaining what

typo: we are 'here'

> ahci.c does.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/ata/ahci.c         | 26 ++++++++++++++++++++------
>  drivers/ata/dwc_ahci.c     |  6 +++++-
>  drivers/ata/sata_ceva.c    |  3 ++-
>  drivers/scsi/scsi-uclass.c |  8 --------
>  include/ahci.h             | 16 ++++++++++++++++
>  include/scsi.h             |  4 +---
>  6 files changed, 44 insertions(+), 19 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 19/29] dm: ahci: Drop use of probe_ent
  2017-06-05 19:15 ` [U-Boot] [PATCH 19/29] dm: ahci: Drop use of probe_ent Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> With driver model we cannot have static data or assume that there is only
> one device of each time. Adjust the code so that 'probe_ent' is not needed
> with driver model. Add a new ahci_init_dm() function which can init AHCI
> for driver model without re-allocating the uclass data. Move over the only
> existing driver to use this new function.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/ata/ahci.c     | 75 +++++++++++++++++++++++++++++++-------------------
>  drivers/ata/dwc_ahci.c |  2 +-
>  include/ahci.h         |  8 ++++++
>  3 files changed, 55 insertions(+), 30 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 20/29] dm: scsi: Add operations
  2017-06-05 19:15 ` [U-Boot] [PATCH 20/29] dm: scsi: Add operations Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> Add operations for SCSI. These are not yet implemented, but we have the
> struct.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  include/scsi.h | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 21/29] dm: scsi: Add a device pointer to scan_exec(), scsi_bus_reset()
  2017-06-05 19:15 ` [U-Boot] [PATCH 21/29] dm: scsi: Add a device pointer to scan_exec(), scsi_bus_reset() Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> With driver model these functions need a device pointer. Add one even
> when CONFIG_DM_SCSI is not defined. This avoids having ugly conditional
> function prototypes, When CONFIG_DM_SCSI is not defined we can just ignore
> the pointer.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  arch/arm/mach-omap2/sata.c  |  4 +++-
>  cmd/scsi.c                  |  2 +-
>  drivers/ata/ahci.c          | 13 ++++++++++---
>  drivers/scsi/sandbox_scsi.c |  5 +++--
>  drivers/scsi/scsi.c         | 31 +++++++++++++++++++------------
>  include/scsi.h              |  4 ++--
>  6 files changed, 38 insertions(+), 21 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 22/29] dm: scsi: Document and rename the scsi_scan() parameter
  2017-06-05 19:15 ` [U-Boot] [PATCH 22/29] dm: scsi: Document and rename the scsi_scan() parameter Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> The 'mode' parameter is actually a flag to determine whether to display
> a list of devices found during the scan. Rename it to reflect this, add a
> function comment and adjust callers to use a boolean.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c |  2 +-
>  arch/arm/cpu/armv8/fsl-layerscape/soc.c   |  4 ++--
>  board/highbank/highbank.c                 |  2 +-
>  cmd/scsi.c                                |  4 ++--
>  common/spl/spl_sata.c                     |  2 +-
>  drivers/scsi/scsi.c                       | 20 ++++++++++----------
>  include/scsi.h                            |  8 +++++---
>  7 files changed, 22 insertions(+), 20 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 23/29] dm: ahci: Create a local version of two SCSI functions
  2017-06-05 19:15 ` [U-Boot] [PATCH 23/29] dm: ahci: Create a local version of two SCSI functions Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> With driver model we need to define implementations of exec() and
> bus_reset() separately for each SCSI driver. As a first step, create a
> local version of each function in the AHCI driver and call each from its
> global version.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/ata/ahci.c | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 24/29] dm: scsi: Add operations for SCSI devices
  2017-06-05 19:15 ` [U-Boot] [PATCH 24/29] dm: scsi: Add operations for SCSI devices Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> The SCSI uclass currently has no operations. It just uses the global SCSI
> functions. Fix this by adding operations to the only two drivers that use
> the uclass, and replacing the global functions with those defined locally
> in the SCSI code.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/ata/ahci.c         |  7 +++++++
>  drivers/ata/dwc_ahci.c     |  1 +
>  drivers/ata/sata_ceva.c    |  1 +
>  drivers/scsi/scsi-uclass.c | 20 ++++++++++++++++++++
>  include/scsi.h             | 28 +++++++++++++++++++++++-----
>  5 files changed, 52 insertions(+), 5 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 25/29] dm: scsi: Adjust return value of scsi_exec()
  2017-06-05 19:15 ` [U-Boot] [PATCH 25/29] dm: scsi: Adjust return value of scsi_exec() Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> Change this function to return an error number instead of true/false.
> This allows us to return a proper error number.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/ata/ahci.c  | 6 +++---
>  drivers/scsi/scsi.c | 8 ++++----
>  2 files changed, 7 insertions(+), 7 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 26/29] dm: scsi: Split out the bus scanning code
  2017-06-05 19:15 ` [U-Boot] [PATCH 26/29] dm: scsi: Split out the bus scanning code Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> Split out the code that scans a single SCSI bus into a separate function.
> This will allow it to be used from driver model.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/scsi/scsi.c | 35 +++++++++++++++++++++++------------
>  include/scsi.h      |  8 ++++++++
>  2 files changed, 31 insertions(+), 12 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 27/29] dm: ahci: Add a driver for SCSI on AHCI
  2017-06-05 19:15 ` [U-Boot] [PATCH 27/29] dm: ahci: Add a driver for SCSI on AHCI Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  2017-06-14 10:59     ` Simon Glass
  0 siblings, 1 reply; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

Hi Simon,

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> Some AHCI drivers use SCSI under the hood. Rather than making the AHCI
> driver be in the SCSI uclass it makes sense to have the AHCI device create
> a SCSI device as a child. That way we can handle any AHCI-specific
> operations rather than trying to pretend tha the device is just SCSI.
>
> To handle this we need to provide a way for AHCI drivers to bind a SCSI
> device as its child, and probe it. Add functions for this.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/ata/ahci.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  include/ahci.h     | 22 ++++++++++++++++++++++
>  2 files changed, 74 insertions(+)
>
> diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
> index 3528a1f3da..c67a144f02 100644
> --- a/drivers/ata/ahci.c
> +++ b/drivers/ata/ahci.c
> @@ -23,6 +23,8 @@
>  #include <libata.h>
>  #include <linux/ctype.h>
>  #include <ahci.h>
> +#include <dm/device-internal.h>
> +#include <dm/lists.h>
>
>  static int ata_io_flush(struct ahci_uc_priv *uc_priv, u8 port);
>
> @@ -1142,10 +1144,60 @@ static int ahci_scsi_bus_reset(struct udevice *dev)
>  }
>
>  #ifdef CONFIG_DM_SCSI
> +int ahci_bind_scsi(struct udevice *ahci_dev, struct udevice **devp)
> +{
> +       struct udevice *dev;
> +       int ret;
> +
> +       ret = device_bind_driver(ahci_dev, "ahci_scsi", "ahci_scsi", &dev);
> +       if (ret)
> +               return ret;
> +       *devp = dev;
> +
> +       return 0;
> +}
> +
> +int ahci_probe_scsi(struct udevice *ahci_dev)
> +{
> +       struct ahci_uc_priv *uc_priv;
> +       struct scsi_platdata *uc_plat;
> +       struct udevice *dev;
> +       int ret;
> +
> +       device_find_first_child(ahci_dev, &dev);
> +       if (!dev)
> +               return -ENODEV;
> +       uc_plat = dev_get_uclass_platdata(dev);
> +       uc_plat->base = (ulong)dm_pci_map_bar(ahci_dev, PCI_BASE_ADDRESS_5,
> +                                             PCI_REGION_MEM);

This assumes AHCI controller is on PCI bus. How about other AHCI
controllers integrated directly into the SoC?

> +       uc_plat->max_lun = 1;
> +       uc_plat->max_id = 2;
> +       uc_priv = dev_get_uclass_priv(dev);
> +       ret = ahci_init_one(uc_priv, dev);
> +       if (ret)
> +               return ret;
> +       ret = ahci_start_ports(uc_priv);
> +       if (ret)
> +               return ret;
> +
> +       debug("Scanning %s\n", dev->name);
> +       ret = scsi_scan_dev(dev, true);
> +       if (ret)
> +               return ret;
> +
> +       return 0;
> +}
> +
>  struct scsi_ops scsi_ops = {
>         .exec           = ahci_scsi_exec,
>         .bus_reset      = ahci_scsi_bus_reset,
>  };
> +
> +U_BOOT_DRIVER(ahci_scsi) = {
> +       .name           = "ahci_scsi",
> +       .id             = UCLASS_SCSI,
> +       .ops            = &scsi_ops,
> +};
>  #else
>  int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
>  {
> diff --git a/include/ahci.h b/include/ahci.h
> index 648e56a4cf..746bff083a 100644
> --- a/include/ahci.h
> +++ b/include/ahci.h
> @@ -203,4 +203,26 @@ int achi_start_ports_dm(struct udevice *dev);
>   */
>  int ahci_init_dm(struct udevice *dev, void __iomem *base);
>
> +/**
> + * ahci_bind_scsi() - bind a new SCSI bus as a child
> + *
> + * Note that the SCSI bus device will itself bind block devices
> + *
> + * @ahci_dev: AHCI parent device
> + * @devp: Returns new SCSI bus device
> + * @return 0 if OK, -ve on error
> + */
> +int ahci_bind_scsi(struct udevice *ahci_dev, struct udevice **devp);
> +
> +/**
> + * ahci_probe_scsi() - probe and scan the attached SCSI bus
> + *
> + * Note that the SCSI device will itself bind block devices for any storage
> + * devices it finds.
> + *
> + * @ahci_dev: AHCI parent device
> + * @return 0 if OK, -ve on error
> + */
> +int ahci_probe_scsi(struct udevice *ahci_dev);
> +
>  #endif
> --

Regards,
Bin

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 28/29] dm: scsi: Drop scsi_init() when driver model is used
  2017-06-05 19:15 ` [U-Boot] [PATCH 28/29] dm: scsi: Drop scsi_init() when driver model is used Simon Glass
@ 2017-06-13  3:14   ` Bin Meng
  0 siblings, 0 replies; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:14 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> This function should not be used with driver model. Update the code to
> reflect this.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  drivers/scsi/scsi.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 29/29] RFC: x86: Move link to use driver model for SCSI
  2017-06-05 19:15 ` [U-Boot] [PATCH 29/29] RFC: x86: Move link to use driver model for SCSI Simon Glass
@ 2017-06-13  3:15   ` Bin Meng
  2017-06-14 10:59     ` Simon Glass
  0 siblings, 1 reply; 62+ messages in thread
From: Bin Meng @ 2017-06-13  3:15 UTC (permalink / raw)
  To: u-boot

Hi Simon,

On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
> As a demonstration of how to use SCSI with driver model, move link over
> to use this. This patch needs more work, but illustrates the concept.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>  arch/x86/cpu/ivybridge/sata.c     | 38 +++++++++++++++++++++++++++++++++++++-
>  configs/chromebook_link_defconfig |  2 ++
>  2 files changed, 39 insertions(+), 1 deletion(-)
>

This is great! Thanks a lot.

> diff --git a/arch/x86/cpu/ivybridge/sata.c b/arch/x86/cpu/ivybridge/sata.c
> index 0f5e190425..5bbe65d442 100644
> --- a/arch/x86/cpu/ivybridge/sata.c
> +++ b/arch/x86/cpu/ivybridge/sata.c
> @@ -6,6 +6,7 @@
>   */
>
>  #include <common.h>
> +#include <ahci.h>
>  #include <dm.h>
>  #include <fdtdec.h>
>  #include <asm/io.h>
> @@ -208,6 +209,20 @@ static void bd82x6x_sata_enable(struct udevice *dev)
>         dm_pci_write_config16(dev, 0x90, map);
>  }
>
> +static int bd82x6x_sata_bind(struct udevice *dev)
> +{
> +       struct udevice *scsi_dev;
> +       int ret;
> +
> +       if (gd->flags & GD_FLG_RELOC) {
> +               ret = ahci_bind_scsi(dev, &scsi_dev);
> +               if (ret)
> +                       return ret;
> +       }
> +
> +       return 0;
> +}
> +
>  static int bd82x6x_sata_probe(struct udevice *dev)
>  {
>         struct udevice *pch;
> @@ -219,8 +234,12 @@ static int bd82x6x_sata_probe(struct udevice *dev)
>
>         if (!(gd->flags & GD_FLG_RELOC))
>                 bd82x6x_sata_enable(dev);
> -       else
> +       else {
>                 bd82x6x_sata_init(dev, pch);
> +               ret = ahci_probe_scsi(dev);
> +               if (ret)
> +                       return ret;
> +       }
>
>         return 0;
>  }
> @@ -234,5 +253,22 @@ U_BOOT_DRIVER(ahci_ivybridge_drv) = {
>         .name           = "ahci_ivybridge",
>         .id             = UCLASS_AHCI,
>         .of_match       = bd82x6x_ahci_ids,
> +       .bind           = bd82x6x_sata_bind,
>         .probe          = bd82x6x_sata_probe,
>  };
> +
> +static struct pci_device_id chromebook_ssd_supported[] = {
> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_NM10_AHCI) },
> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL,
> +                    PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_MOBILE) },
> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL,
> +                    PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_SERIES6) },
> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL,
> +                    PCI_DEVICE_ID_INTEL_PANTHERPOINT_AHCI_MOBILE) },
> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_AHCI) },
> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL,
> +                    PCI_DEVICE_ID_INTEL_WILDCATPOINT_AHCI) },
> +       {},
> +};

Since  AHCI is pretty generic, instead of providing device list
filter, can we just use PCI class and sub-class for AHCI, like USB?

For Ivybridge specific stuff, we can call the low level initialization
function as part of the SoC/platform initialization codes.

> +
> +U_BOOT_PCI_DEVICE(ahci_ivybridge_drv, chromebook_ssd_supported);
> diff --git a/configs/chromebook_link_defconfig b/configs/chromebook_link_defconfig
> index a463270514..503581dfce 100644
> --- a/configs/chromebook_link_defconfig
> +++ b/configs/chromebook_link_defconfig
> @@ -40,6 +40,8 @@ CONFIG_OF_CONTROL=y
>  CONFIG_REGMAP=y
>  CONFIG_SYSCON=y
>  CONFIG_SCSI=y
> +CONFIG_DM_SCSI=y
> +CONFIG_BLK=y
>  CONFIG_CPU=y
>  CONFIG_DM_I2C=y
>  CONFIG_SYS_I2C_INTEL=y
> --

Regards,
Bin

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 01/29] configs: Resync with savedefconfig
  2017-06-13  1:21   ` Bin Meng
@ 2017-06-13 13:24     ` Tom Rini
  0 siblings, 0 replies; 62+ messages in thread
From: Tom Rini @ 2017-06-13 13:24 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 13, 2017 at 09:21:25AM +0800, Bin Meng wrote:
> +Tom
> 
> Hi Tom,
> 
> On Tue, Jun 6, 2017 at 3:14 AM, Simon Glass <sjg@chromium.org> wrote:
> > Rsync all defconfig files using moveconfig.py
> >
> > Signed-off-by: Simon Glass <sjg@chromium.org>
> > ---
> >
> >  configs/Sinovoip_BPI_M2_Plus_defconfig           |  1 -
> >  configs/UCP1020_SPIFLASH_defconfig               |  2 +-
> >  configs/UCP1020_defconfig                        |  2 +-
> >  configs/adp-ae3xx_defconfig                      |  6 +--
> >  configs/adp-ag101p_defconfig                     |  6 +--
> >  configs/am335x_baltos_defconfig                  |  4 +-
> >  configs/am335x_boneblack_vboot_defconfig         |  1 -
> >  configs/am335x_evm_defconfig                     |  1 -
> >  configs/am335x_hs_evm_defconfig                  |  4 --
> >  configs/am335x_igep003x_defconfig                |  6 +--
> >  configs/am335x_shc_defconfig                     |  4 +-
> >  configs/am335x_shc_ict_defconfig                 |  4 +-
> >  configs/am335x_shc_netboot_defconfig             |  4 +-
> >  configs/am335x_shc_prompt_defconfig              |  4 +-
> >  configs/am335x_shc_sdboot_defconfig              |  4 +-
> >  configs/am335x_shc_sdboot_prompt_defconfig       |  4 +-
> >  configs/am335x_sl50_defconfig                    |  4 +-
> >  configs/am43xx_evm_defconfig                     |  3 +-
> >  configs/am43xx_evm_usbhost_boot_defconfig        |  1 -
> >  configs/am43xx_hs_evm_defconfig                  |  3 +-
> >  configs/am57xx_evm_defconfig                     |  5 +-
> >  configs/am57xx_hs_evm_defconfig                  |  5 +-
> >  configs/at91sam9263ek_norflash_boot_defconfig    |  2 +-
> >  configs/at91sam9263ek_norflash_defconfig         |  2 +-
> >  configs/bcm958622hr_defconfig                    |  2 +-
> >  configs/birdland_bav335a_defconfig               |  2 +-
> >  configs/birdland_bav335b_defconfig               |  2 +-
> >  configs/blanche_defconfig                        |  1 -
> >  configs/brppt1_mmc_defconfig                     |  2 +-
> >  configs/brppt1_nand_defconfig                    |  2 +-
> >  configs/brppt1_spi_defconfig                     |  2 +-
> >  configs/brxre1_defconfig                         |  2 +-
> >  configs/chiliboard_defconfig                     |  4 +-
> >  configs/chromebook_minnie_defconfig              |  2 +-
> >  configs/clearfog_defconfig                       |  2 -
> >  configs/cm_fx6_defconfig                         |  2 +-
> >  configs/cm_t335_defconfig                        |  2 +-
> >  configs/cm_t43_defconfig                         |  2 +-
> >  configs/colibri_imx7_defconfig                   |  2 +-
> >  configs/colibri_vf_defconfig                     |  2 +-
> >  configs/comtrend_ar5387un_ram_defconfig          | 66 ++++++++++-------------
> >  configs/comtrend_ct5361_ram_defconfig            | 68 ++++++++++--------------
> >  configs/comtrend_vr3032u_ram_defconfig           | 66 ++++++++++-------------
> >  configs/dra7xx_evm_defconfig                     | 12 ++---
> >  configs/dra7xx_hs_evm_defconfig                  |  9 ++--
> >  configs/evb-ast2500_defconfig                    | 12 ++---
> >  configs/evb-rk3399_defconfig                     |  5 +-
> >  configs/firefly-rk3399_defconfig                 |  1 -
> >  configs/gwventana_emmc_defconfig                 |  2 +-
> >  configs/gwventana_gw5904_defconfig               |  2 +-
> >  configs/gwventana_nand_defconfig                 |  2 +-
> >  configs/huawei_hg556a_ram_defconfig              | 67 ++++++++++-------------
> >  configs/imx6qdl_icore_mmc_defconfig              |  4 +-
> >  configs/imx6qdl_icore_rqs_mmc_defconfig          |  2 +-
> >  configs/k2e_evm_defconfig                        |  5 +-
> >  configs/k2e_hs_evm_defconfig                     |  3 +-
> >  configs/k2g_evm_defconfig                        |  5 +-
> >  configs/k2g_hs_evm_defconfig                     |  6 +--
> >  configs/k2hk_evm_defconfig                       |  4 +-
> >  configs/k2hk_hs_evm_defconfig                    |  3 +-
> >  configs/k2l_evm_defconfig                        |  4 +-
> >  configs/ls2081ardb_defconfig                     | 13 ++---
> >  configs/ls2088ardb_qspi_defconfig                | 13 ++---
> >  configs/m53evk_defconfig                         |  2 +-
> >  configs/mx51evk_defconfig                        |  2 +-
> >  configs/mx53cx9020_defconfig                     |  2 +-
> >  configs/mx53loco_defconfig                       |  2 +-
> >  configs/mx6cuboxi_defconfig                      |  2 +-
> >  configs/mx6sxsabresd_defconfig                   |  2 +-
> >  configs/mx6sxsabresd_spl_defconfig               |  2 +-
> >  configs/mx7dsabresd_defconfig                    |  2 +-
> >  configs/nanopi_neo_air_defconfig                 |  2 +-
> >  configs/nanopi_neo_defconfig                     |  2 +-
> >  configs/netgear_cg3100d_ram_defconfig            | 66 ++++++++++-------------
> >  configs/novena_defconfig                         |  2 +-
> >  configs/omap3_logic_defconfig                    |  1 -
> >  configs/opos6uldev_defconfig                     |  2 +-
> >  configs/orangepi_2_defconfig                     |  1 -
> >  configs/orangepi_lite_defconfig                  |  1 -
> >  configs/orangepi_one_defconfig                   |  1 -
> >  configs/orangepi_pc2_defconfig                   |  1 -
> >  configs/orangepi_pc_defconfig                    |  1 -
> >  configs/orangepi_pc_plus_defconfig               |  1 -
> >  configs/orangepi_plus2e_defconfig                |  1 -
> >  configs/orangepi_plus_defconfig                  |  1 -
> >  configs/orangepi_zero_defconfig                  |  2 +-
> >  configs/pcm051_rev1_defconfig                    |  2 +-
> >  configs/pcm051_rev3_defconfig                    |  2 +-
> >  configs/pengwyn_defconfig                        |  2 +-
> >  configs/pepper_defconfig                         |  2 +-
> >  configs/pine64_plus_defconfig                    |  3 +-
> >  configs/puma-rk3399_defconfig                    |  1 -
> >  configs/pxm2_defconfig                           |  2 +-
> >  configs/r8a7795_salvator-x_defconfig             | 19 ++-----
> >  configs/r8a7796_salvator-x_defconfig             | 20 ++-----
> >  configs/rut_defconfig                            |  2 +-
> >  configs/sagem_f at st1704_ram_defconfig             | 66 ++++++++++-------------
> >  configs/sama5d2_xplained_mmc_defconfig           |  4 +-
> >  configs/sama5d2_xplained_spiflash_defconfig      |  2 +-
> >  configs/sandbox_defconfig                        |  9 ++--
> >  configs/sandbox_flattree_defconfig               | 11 ++--
> >  configs/sandbox_noblk_defconfig                  |  5 +-
> >  configs/sandbox_spl_defconfig                    |  4 +-
> >  configs/sfr_nb4-ser_ram_defconfig                | 66 ++++++++++-------------
> >  configs/stm32f746-disco_defconfig                | 14 ++---
> >  configs/tbs2910_defconfig                        |  2 +-
> >  configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig |  2 +-
> >  configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig |  2 +-
> >  configs/xilinx_zynqmp_zcu102_defconfig           |  2 +-
> >  configs/xilinx_zynqmp_zcu102_revB_defconfig      |  2 +-
> >  110 files changed, 337 insertions(+), 499 deletions(-)
> 
> I believe a better way is to have someone schedule such house keeping
> before each release. What do you think?

Yes, agreed.  I intended to do it right before -rc1, but I'll do it
before -rc2 for sure.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170613/0afa2778/attachment.sig>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 27/29] dm: ahci: Add a driver for SCSI on AHCI
  2017-06-13  3:14   ` Bin Meng
@ 2017-06-14 10:59     ` Simon Glass
  0 siblings, 0 replies; 62+ messages in thread
From: Simon Glass @ 2017-06-14 10:59 UTC (permalink / raw)
  To: u-boot

Hi Bin,

On 12 June 2017 at 21:14, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi Simon,
>
> On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
>> Some AHCI drivers use SCSI under the hood. Rather than making the AHCI
>> driver be in the SCSI uclass it makes sense to have the AHCI device create
>> a SCSI device as a child. That way we can handle any AHCI-specific
>> operations rather than trying to pretend tha the device is just SCSI.
>>
>> To handle this we need to provide a way for AHCI drivers to bind a SCSI
>> device as its child, and probe it. Add functions for this.
>>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>> ---
>>
>>  drivers/ata/ahci.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>>  include/ahci.h     | 22 ++++++++++++++++++++++
>>  2 files changed, 74 insertions(+)
>>
>> diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
>> index 3528a1f3da..c67a144f02 100644
>> --- a/drivers/ata/ahci.c
>> +++ b/drivers/ata/ahci.c
>> @@ -23,6 +23,8 @@
>>  #include <libata.h>
>>  #include <linux/ctype.h>
>>  #include <ahci.h>
>> +#include <dm/device-internal.h>
>> +#include <dm/lists.h>
>>
>>  static int ata_io_flush(struct ahci_uc_priv *uc_priv, u8 port);
>>
>> @@ -1142,10 +1144,60 @@ static int ahci_scsi_bus_reset(struct udevice *dev)
>>  }
>>
>>  #ifdef CONFIG_DM_SCSI
>> +int ahci_bind_scsi(struct udevice *ahci_dev, struct udevice **devp)
>> +{
>> +       struct udevice *dev;
>> +       int ret;
>> +
>> +       ret = device_bind_driver(ahci_dev, "ahci_scsi", "ahci_scsi", &dev);
>> +       if (ret)
>> +               return ret;
>> +       *devp = dev;
>> +
>> +       return 0;
>> +}
>> +
>> +int ahci_probe_scsi(struct udevice *ahci_dev)
>> +{
>> +       struct ahci_uc_priv *uc_priv;
>> +       struct scsi_platdata *uc_plat;
>> +       struct udevice *dev;
>> +       int ret;
>> +
>> +       device_find_first_child(ahci_dev, &dev);
>> +       if (!dev)
>> +               return -ENODEV;
>> +       uc_plat = dev_get_uclass_platdata(dev);
>> +       uc_plat->base = (ulong)dm_pci_map_bar(ahci_dev, PCI_BASE_ADDRESS_5,
>> +                                             PCI_REGION_MEM);
>
> This assumes AHCI controller is on PCI bus. How about other AHCI
> controllers integrated directly into the SoC?

I have not done this yet - it would have to be a follow-up series.
This one focuses mostly on SCSI. The ahci.c driver seems to me to be
only supporting using an AHCI controller via SCSI. I added a comment
to the drop to make that clear once I figured it out.

Also sata.h will need converting and the AHCI uclass will need to have
operations, etc.

Regards,
Simon

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [U-Boot] [PATCH 29/29] RFC: x86: Move link to use driver model for SCSI
  2017-06-13  3:15   ` Bin Meng
@ 2017-06-14 10:59     ` Simon Glass
  0 siblings, 0 replies; 62+ messages in thread
From: Simon Glass @ 2017-06-14 10:59 UTC (permalink / raw)
  To: u-boot

Hi Bin,

On 12 June 2017 at 21:15, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi Simon,
>
> On Tue, Jun 6, 2017 at 3:15 AM, Simon Glass <sjg@chromium.org> wrote:
>> As a demonstration of how to use SCSI with driver model, move link over
>> to use this. This patch needs more work, but illustrates the concept.
>>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>> ---
>>
>>  arch/x86/cpu/ivybridge/sata.c     | 38 +++++++++++++++++++++++++++++++++++++-
>>  configs/chromebook_link_defconfig |  2 ++
>>  2 files changed, 39 insertions(+), 1 deletion(-)
>>
>
> This is great! Thanks a lot.
>
>> diff --git a/arch/x86/cpu/ivybridge/sata.c b/arch/x86/cpu/ivybridge/sata.c
>> index 0f5e190425..5bbe65d442 100644
>> --- a/arch/x86/cpu/ivybridge/sata.c
>> +++ b/arch/x86/cpu/ivybridge/sata.c
>> @@ -6,6 +6,7 @@
>>   */
>>
>>  #include <common.h>
>> +#include <ahci.h>
>>  #include <dm.h>
>>  #include <fdtdec.h>
>>  #include <asm/io.h>
>> @@ -208,6 +209,20 @@ static void bd82x6x_sata_enable(struct udevice *dev)
>>         dm_pci_write_config16(dev, 0x90, map);
>>  }
>>
>> +static int bd82x6x_sata_bind(struct udevice *dev)
>> +{
>> +       struct udevice *scsi_dev;
>> +       int ret;
>> +
>> +       if (gd->flags & GD_FLG_RELOC) {
>> +               ret = ahci_bind_scsi(dev, &scsi_dev);
>> +               if (ret)
>> +                       return ret;
>> +       }
>> +
>> +       return 0;
>> +}
>> +
>>  static int bd82x6x_sata_probe(struct udevice *dev)
>>  {
>>         struct udevice *pch;
>> @@ -219,8 +234,12 @@ static int bd82x6x_sata_probe(struct udevice *dev)
>>
>>         if (!(gd->flags & GD_FLG_RELOC))
>>                 bd82x6x_sata_enable(dev);
>> -       else
>> +       else {
>>                 bd82x6x_sata_init(dev, pch);
>> +               ret = ahci_probe_scsi(dev);
>> +               if (ret)
>> +                       return ret;
>> +       }
>>
>>         return 0;
>>  }
>> @@ -234,5 +253,22 @@ U_BOOT_DRIVER(ahci_ivybridge_drv) = {
>>         .name           = "ahci_ivybridge",
>>         .id             = UCLASS_AHCI,
>>         .of_match       = bd82x6x_ahci_ids,
>> +       .bind           = bd82x6x_sata_bind,
>>         .probe          = bd82x6x_sata_probe,
>>  };
>> +
>> +static struct pci_device_id chromebook_ssd_supported[] = {
>> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_NM10_AHCI) },
>> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL,
>> +                    PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_MOBILE) },
>> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL,
>> +                    PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_SERIES6) },
>> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL,
>> +                    PCI_DEVICE_ID_INTEL_PANTHERPOINT_AHCI_MOBILE) },
>> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_AHCI) },
>> +       { PCI_DEVICE(PCI_VENDOR_ID_INTEL,
>> +                    PCI_DEVICE_ID_INTEL_WILDCATPOINT_AHCI) },
>> +       {},
>> +};
>
> Since  AHCI is pretty generic, instead of providing device list
> filter, can we just use PCI class and sub-class for AHCI, like USB?
>
> For Ivybridge specific stuff, we can call the low level initialization
> function as part of the SoC/platform initialization codes.

Actually this code should be dropped. I was experimenting with how to
enable it generally (as you suggest). But we really need to do what
you say but in a separate file.

The question I have is how to enable a sub-class to use this driver,
since some devices will want to use ahci.c (i.e. SCSI-based) and some
will have their own drivers. I'm not sure that we support finding more
specific PCI drivers first.

Anyway I will respin this series with this patch updated and we can
work it out from there.

Regards,
Simon

^ permalink raw reply	[flat|nested] 62+ messages in thread

end of thread, other threads:[~2017-06-14 10:59 UTC | newest]

Thread overview: 62+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-05 19:14 [U-Boot] [PATCH 00/29] dm: scsi: Enhance SCSI support for driver model Simon Glass
2017-06-05 19:14 ` [U-Boot] [PATCH 01/29] configs: Resync with savedefconfig Simon Glass
2017-06-13  1:21   ` Bin Meng
2017-06-13 13:24     ` Tom Rini
2017-06-05 19:14 ` [U-Boot] [PATCH 02/29] Convert CONFIG_SCSI to Kconfig Simon Glass
2017-06-13  2:12   ` Bin Meng
2017-06-05 19:14 ` [U-Boot] [PATCH 03/29] scsi: Drop sym53c8xx driver Simon Glass
2017-06-13  2:12   ` Bin Meng
2017-06-05 19:14 ` [U-Boot] [PATCH 04/29] scsi: Drop scsi_print_error() Simon Glass
2017-06-13  2:13   ` Bin Meng
2017-06-05 19:14 ` [U-Boot] [PATCH 05/29] Convert CONFIG_CMD_SATA to Kconfig Simon Glass
2017-06-13  2:13   ` Bin Meng
2017-06-05 19:14 ` [U-Boot] [PATCH 06/29] Kconfig: Add CONFIG_SATA to enable SATA Simon Glass
2017-06-13  2:13   ` Bin Meng
2017-06-05 19:14 ` [U-Boot] [PATCH 07/29] sata: Move drivers into new drivers/ata directory Simon Glass
2017-06-13  2:13   ` Bin Meng
2017-06-05 19:14 ` [U-Boot] [PATCH 08/29] scsi: Move drivers into new drivers/scsi directory Simon Glass
2017-06-13  2:13   ` Bin Meng
2017-06-05 19:14 ` [U-Boot] [PATCH 09/29] dm: scsi: Rearrange header file for driver model Simon Glass
2017-06-13  3:13   ` Bin Meng
2017-06-05 19:14 ` [U-Boot] [PATCH 10/29] dm: scsi: Rename struct SCSI_cmd_block to struct scsi_cmd Simon Glass
2017-06-13  3:13   ` Bin Meng
2017-06-05 19:14 ` [U-Boot] [PATCH 11/29] dm: scsi: Drop the ccb typedef Simon Glass
2017-06-13  3:13   ` Bin Meng
2017-06-05 19:14 ` [U-Boot] [PATCH 12/29] dm: scsi: Use the uclass platform data Simon Glass
2017-06-13  3:13   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 13/29] dm: ahci: Rename struct ahci_probe_ent Simon Glass
2017-06-13  3:13   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 14/29] dm: sata: Move ataid into struct ahci_uc_priv Simon Glass
2017-06-13  3:13   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 15/29] dm: ahci: Refactor to avoid static variables Simon Glass
2017-06-13  3:13   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 16/29] dm: scsi: Indent the confusing #ifdefs Simon Glass
2017-06-13  3:13   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 17/29] dm: ahci: Move common code for starting ports into a function Simon Glass
2017-06-13  3:13   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 18/29] dm: ahci: Unwind the confusing init code Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 19/29] dm: ahci: Drop use of probe_ent Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 20/29] dm: scsi: Add operations Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 21/29] dm: scsi: Add a device pointer to scan_exec(), scsi_bus_reset() Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 22/29] dm: scsi: Document and rename the scsi_scan() parameter Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 23/29] dm: ahci: Create a local version of two SCSI functions Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 24/29] dm: scsi: Add operations for SCSI devices Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 25/29] dm: scsi: Adjust return value of scsi_exec() Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 26/29] dm: scsi: Split out the bus scanning code Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 27/29] dm: ahci: Add a driver for SCSI on AHCI Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-14 10:59     ` Simon Glass
2017-06-05 19:15 ` [U-Boot] [PATCH 28/29] dm: scsi: Drop scsi_init() when driver model is used Simon Glass
2017-06-13  3:14   ` Bin Meng
2017-06-05 19:15 ` [U-Boot] [PATCH 29/29] RFC: x86: Move link to use driver model for SCSI Simon Glass
2017-06-13  3:15   ` Bin Meng
2017-06-14 10:59     ` Simon Glass

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.