From 30a570a983c77cddda314cdb2bc5763112338746 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 23 Apr 2017 20:10:43 -0600 Subject: dm: core: Clarify uclass_first/next_device() comments These are not as clear as they could be. Tidy them up a bit. Also fix a tiny code-style nit. Signed-off-by: Simon Glass --- include/dm/uclass.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/dm/uclass.h b/include/dm/uclass.h index 7f5a1304b5c..4dcd883ac55 100644 --- a/include/dm/uclass.h +++ b/include/dm/uclass.h @@ -241,8 +241,13 @@ int uclass_get_device_by_driver(enum uclass_id id, const struct driver *drv, * * The device returned is probed if necessary, and ready for use * + * This function is useful to start iterating through a list of devices which + * are functioning correctly and can be probed. + * * @id: Uclass ID to look up - * @devp: Returns pointer to the first device in that uclass, or NULL if none + * @devp: Returns pointer to the first device in that uclass if no error + * occurred, or NULL if there is no first device, or an error occurred with + * that device. * @return 0 if OK (found or not found), other -ve on error */ int uclass_first_device(enum uclass_id id, struct udevice **devp); @@ -263,8 +268,12 @@ int uclass_first_device_err(enum uclass_id id, struct udevice **devp); * * The device returned is probed if necessary, and ready for use * + * This function is useful to start iterating through a list of devices which + * are functioning correctly and can be probed. + * * @devp: On entry, pointer to device to lookup. On exit, returns pointer - * to the next device in the same uclass, or NULL if none + * to the next device in the uclass if no error occurred, or NULL if there is + * no next device, or an error occurred with that next device. * @return 0 if OK (found or not found), other -ve on error */ int uclass_next_device(struct udevice **devp); -- cgit v1.3.1 From 9856157259f4ab55e3d99c9aacc85f08797c8579 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 23 Apr 2017 20:10:44 -0600 Subject: dm: core: Test uclass_first/next_device() on probe failure Add some tests which check the behaviour of uclass_first_device() and uclass_next_device() when probing of a device fails. Signed-off-by: Simon Glass --- arch/sandbox/dts/test.dts | 19 +++++++++++++ include/dm/uclass-id.h | 1 + test/dm/test-fdt.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+) (limited to 'include') diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 7dde95d4b1e..65b2f8ecdac 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -289,6 +289,25 @@ }; }; + probing { + compatible = "simple-bus"; + test1 { + compatible = "denx,u-boot-probe-test"; + }; + + test2 { + compatible = "denx,u-boot-probe-test"; + }; + + test3 { + compatible = "denx,u-boot-probe-test"; + }; + + test4 { + compatible = "denx,u-boot-probe-test"; + }; + }; + pwrdom: power-domain { compatible = "sandbox,power-domain"; #power-domain-cells = <1>; diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h index 1f7e32c31ff..2e6498b7dcd 100644 --- a/include/dm/uclass-id.h +++ b/include/dm/uclass-id.h @@ -18,6 +18,7 @@ enum uclass_id { UCLASS_TEST, UCLASS_TEST_FDT, UCLASS_TEST_BUS, + UCLASS_TEST_PROBE, UCLASS_SPI_EMUL, /* sandbox SPI device emulator */ UCLASS_I2C_EMUL, /* sandbox I2C device emulator */ UCLASS_PCI_EMUL, /* sandbox PCI device emulator */ diff --git a/test/dm/test-fdt.c b/test/dm/test-fdt.c index 987a265ba90..7c9c5debe66 100644 --- a/test/dm/test-fdt.c +++ b/test/dm/test-fdt.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -99,6 +100,36 @@ UCLASS_DRIVER(testfdt) = { .flags = DM_UC_FLAG_SEQ_ALIAS, }; +struct dm_testprobe_pdata { + int probe_err; +}; + +static int testprobe_drv_probe(struct udevice *dev) +{ + struct dm_testprobe_pdata *pdata = dev_get_platdata(dev); + + return pdata->probe_err; +} + +static const struct udevice_id testprobe_ids[] = { + { .compatible = "denx,u-boot-probe-test" }, + { } +}; + +U_BOOT_DRIVER(testprobe_drv) = { + .name = "testprobe_drv", + .of_match = testprobe_ids, + .id = UCLASS_TEST_PROBE, + .probe = testprobe_drv_probe, + .platdata_auto_alloc_size = sizeof(struct dm_testprobe_pdata), +}; + +UCLASS_DRIVER(testprobe) = { + .name = "testprobe", + .id = UCLASS_TEST_PROBE, + .flags = DM_UC_FLAG_SEQ_ALIAS, +}; + int dm_check_devices(struct unit_test_state *uts, int num_devices) { struct udevice *dev; @@ -267,3 +298,44 @@ static int dm_test_fdt_offset(struct unit_test_state *uts) } DM_TEST(dm_test_fdt_offset, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT | DM_TESTF_FLAT_TREE); + +/** + * Test various error conditions with uclass_first_device() and + * uclass_next_device() + */ +static int dm_test_first_next_device(struct unit_test_state *uts) +{ + struct dm_testprobe_pdata *pdata; + struct udevice *dev, *parent = NULL; + int count; + int ret; + + /* There should be 4 devices */ + for (ret = uclass_first_device(UCLASS_TEST_PROBE, &dev), count = 0; + dev; + ret = uclass_next_device(&dev)) { + count++; + parent = dev_get_parent(dev); + } + ut_assertok(ret); + ut_asserteq(4, count); + + /* Remove them and try again, with an error on the second one */ + ut_assertok(uclass_get_device(UCLASS_TEST_PROBE, 1, &dev)); + pdata = dev_get_platdata(dev); + pdata->probe_err = -ENOMEM; + device_remove(parent, DM_REMOVE_NORMAL); + ut_assertok(uclass_first_device(UCLASS_TEST_PROBE, &dev)); + ut_asserteq(-ENOMEM, uclass_next_device(&dev)); + ut_asserteq_ptr(dev, NULL); + + /* Now an error on the first one */ + ut_assertok(uclass_get_device(UCLASS_TEST_PROBE, 0, &dev)); + pdata = dev_get_platdata(dev); + pdata->probe_err = -ENOENT; + device_remove(parent, DM_REMOVE_NORMAL); + ut_asserteq(-ENOENT, uclass_first_device(UCLASS_TEST_PROBE, &dev)); + + return 0; +} +DM_TEST(dm_test_first_next_device, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); -- cgit v1.3.1 From 95ce385a4ad0bb0d0a20f68b2a1f2451584bf3ff Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 23 Apr 2017 20:10:45 -0600 Subject: dm: core: Add uclass_first/next_device_check() Sometimes it is useful to iterate through all devices in a uclass and skip over those which do not work correctly (e.g fail to probe). Add two new functions to provide this feature. The caller must check the return value each time to make sure that the device is valid. But the device pointer is always returned. Signed-off-by: Simon Glass --- drivers/core/uclass.c | 27 +++++++++++++++++ include/dm/uclass.h | 31 ++++++++++++++++++++ test/dm/test-fdt.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 138 insertions(+) (limited to 'include') diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c index 97500f41084..f5e40679220 100644 --- a/drivers/core/uclass.c +++ b/drivers/core/uclass.c @@ -492,6 +492,33 @@ int uclass_next_device(struct udevice **devp) return uclass_get_device_tail(dev, ret, devp); } +int uclass_first_device_check(enum uclass_id id, struct udevice **devp) +{ + int ret; + + *devp = NULL; + ret = uclass_find_first_device(id, devp); + if (ret) + return ret; + if (!*devp) + return 0; + + return device_probe(*devp); +} + +int uclass_next_device_check(struct udevice **devp) +{ + int ret; + + ret = uclass_find_next_device(devp); + if (ret) + return ret; + if (!*devp) + return 0; + + return device_probe(*devp); +} + int uclass_bind_device(struct udevice *dev) { struct uclass *uc; diff --git a/include/dm/uclass.h b/include/dm/uclass.h index 4dcd883ac55..18188497c27 100644 --- a/include/dm/uclass.h +++ b/include/dm/uclass.h @@ -278,6 +278,37 @@ int uclass_first_device_err(enum uclass_id id, struct udevice **devp); */ int uclass_next_device(struct udevice **devp); +/** + * uclass_first_device() - Get the first device in a uclass + * + * The device returned is probed if necessary, and ready for use + * + * This function is useful to start iterating through a list of devices which + * are functioning correctly and can be probed. + * + * @id: Uclass ID to look up + * @devp: Returns pointer to the first device in that uclass, or NULL if there + * is no first device + * @return 0 if OK (found or not found), other -ve on error. If an error occurs + * it is still possible to move to the next device. + */ +int uclass_first_device_check(enum uclass_id id, struct udevice **devp); + +/** + * uclass_next_device() - Get the next device in a uclass + * + * The device returned is probed if necessary, and ready for use + * + * This function is useful to start iterating through a list of devices which + * are functioning correctly and can be probed. + * + * @devp: On entry, pointer to device to lookup. On exit, returns pointer + * to the next device in the uclass if any + * @return 0 if OK (found or not found), other -ve on error. If an error occurs + * it is still possible to move to the next device. + */ +int uclass_next_device_check(struct udevice **devp); + /** * uclass_resolve_seq() - Resolve a device's sequence number * diff --git a/test/dm/test-fdt.c b/test/dm/test-fdt.c index 7c9c5debe66..dcc2ef8b652 100644 --- a/test/dm/test-fdt.c +++ b/test/dm/test-fdt.c @@ -339,3 +339,83 @@ static int dm_test_first_next_device(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_first_next_device, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); + +/** + * check_devices() - Check return values and pointers + * + * This runs through a full sequence of uclass_first_device_check()... + * uclass_next_device_check() checking that the return values and devices + * are correct. + * + * @uts: Test state + * @devlist: List of expected devices + * @mask: Indicates which devices should return an error. Device n should + * return error (-NOENT - n) if bit n is set, or no error (i.e. 0) if + * bit n is clear. + */ +static int check_devices(struct unit_test_state *uts, + struct udevice *devlist[], int mask) +{ + int expected_ret; + struct udevice *dev; + int i; + + expected_ret = (mask & 1) ? -ENOENT : 0; + mask >>= 1; + ut_asserteq(expected_ret, + uclass_first_device_check(UCLASS_TEST_PROBE, &dev)); + for (i = 0; i < 4; i++) { + ut_asserteq_ptr(devlist[i], dev); + expected_ret = (mask & 1) ? -ENOENT - (i + 1) : 0; + mask >>= 1; + ut_asserteq(expected_ret, uclass_next_device_check(&dev)); + } + ut_asserteq_ptr(NULL, dev); + + return 0; +} + +/* Test uclass_first_device_check() and uclass_next_device_check() */ +static int dm_test_first_next_ok_device(struct unit_test_state *uts) +{ + struct dm_testprobe_pdata *pdata; + struct udevice *dev, *parent = NULL, *devlist[4]; + int count; + int ret; + + /* There should be 4 devices */ + count = 0; + for (ret = uclass_first_device_check(UCLASS_TEST_PROBE, &dev); + dev; + ret = uclass_next_device_check(&dev)) { + ut_assertok(ret); + devlist[count++] = dev; + parent = dev_get_parent(dev); + } + ut_asserteq(4, count); + ut_assertok(uclass_first_device_check(UCLASS_TEST_PROBE, &dev)); + ut_assertok(check_devices(uts, devlist, 0)); + + /* Remove them and try again, with an error on the second one */ + pdata = dev_get_platdata(devlist[1]); + pdata->probe_err = -ENOENT - 1; + device_remove(parent, DM_REMOVE_NORMAL); + ut_assertok(check_devices(uts, devlist, 1 << 1)); + + /* Now an error on the first one */ + pdata = dev_get_platdata(devlist[0]); + pdata->probe_err = -ENOENT - 0; + device_remove(parent, DM_REMOVE_NORMAL); + ut_assertok(check_devices(uts, devlist, 3 << 0)); + + /* Now errors on all */ + pdata = dev_get_platdata(devlist[2]); + pdata->probe_err = -ENOENT - 2; + pdata = dev_get_platdata(devlist[3]); + pdata->probe_err = -ENOENT - 3; + device_remove(parent, DM_REMOVE_NORMAL); + ut_assertok(check_devices(uts, devlist, 0xf << 0)); + + return 0; +} +DM_TEST(dm_test_first_next_ok_device, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); -- cgit v1.3.1 From fedb428c5beb8776451118f5adc976770a526a33 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:21 -0600 Subject: Convert CONFIG_SCSI to Kconfig This converts the following to Kconfig: CONFIG_SCSI Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- 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/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/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 - 84 files changed, 73 insertions(+), 31 deletions(-) (limited to 'include') diff --git a/README b/README index ee35dec5b5c..de8ba81d7a6 100644 --- a/README +++ b/README @@ -826,7 +826,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_SF * Read/write/erase SPI NOR flash diff --git a/arch/Kconfig b/arch/Kconfig index fe1b9910415..8d5d77ac2bb 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -75,6 +75,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 5f2048bd203..d43aaac2a02 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -792,6 +792,7 @@ config TARGET_LS2080AQDS select BOARD_LATE_INIT select SUPPORT_SPL select ARCH_MISC_INIT + imply SCSI help Support for Freescale LS2080AQDS platform The LS2080A Development System (QDS) is a high-performance @@ -806,6 +807,7 @@ config TARGET_LS2080ARDB select BOARD_LATE_INIT select SUPPORT_SPL select ARCH_MISC_INIT + imply SCSI help Support for Freescale LS2080ARDB platform. The LS2080A Reference design board (RDB) is a high-performance @@ -866,6 +868,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 @@ -894,6 +897,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" @@ -906,6 +910,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" @@ -916,6 +921,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 @@ -930,6 +936,7 @@ config TARGET_LS1043AQDS select BOARD_LATE_INIT select SUPPORT_SPL select BOARD_EARLY_INIT_F + imply SCSI help Support for Freescale LS1043AQDS platform. @@ -941,6 +948,7 @@ config TARGET_LS1043ARDB select BOARD_LATE_INIT select SUPPORT_SPL select BOARD_EARLY_INIT_F + imply SCSI help Support for Freescale LS1043ARDB platform. @@ -953,6 +961,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 @@ -969,6 +978,7 @@ config TARGET_LS1046ARDB select DM_SPI_FLASH if DM_SPI select POWER_MC34VR500 select BOARD_EARLY_INIT_F + imply SCSI help Support for Freescale LS1046ARDB platform. The LS1046A Reference Design Board (RDB) is a high-performance diff --git a/arch/arm/cpu/armv7/ls102xa/Kconfig b/arch/arm/cpu/armv7/ls102xa/Kconfig index b61f3cdcded..6a013b21833 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 d8b285dcd73..5825f9b7264 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 5c4da0f0e35..fc954c53662 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 6ae54ef46ae..89476a663ac 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 1a66abdeb29..08f45bc8688 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 4db687cb922..a4b27610493 100644 --- a/arch/powerpc/cpu/mpc85xx/Kconfig +++ b/arch/powerpc/cpu/mpc85xx/Kconfig @@ -117,6 +117,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 fcac6584e89..2cc180da389 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 875d1ae07b1..ff5a1d84a11 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 25d0a11ce15..d2a1d78783f 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 ec16a44fbd6..914302276f1 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 1f2daa67069..f7b600be5bb 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 7f63d4af54a..182a8f5f741 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 89e87e799b1..ae98e416855 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 6c87648d4f7..61fe5e63900 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 4332eca68f7..8c409faab8f 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 fe75eef5135..352a18ec8ce 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 df65922e83f..4218d5a97ae 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 02c503f672a..dc2722a9bff 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 a8e9c988d5e..f83a691a266 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 f9d56c8f9d8..cbd535c2bce 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 4bae19f2fae..bab25b401cd 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 cc29d606a9d..2ec0847e8a3 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 80416cb7b19..1e61cd20ba5 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 b9f89a013ed..6f4a02f8d46 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 aef9bac3d18..cb15afa9cc3 100644 --- a/configs/MPC8544DS_defconfig +++ b/configs/MPC8544DS_defconfig @@ -15,6 +15,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 d9499905fde..6aef6d84343 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 6b8bd1ad205..516a16f73e9 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 0442360a5cf..0c9e8d16931 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 4c377e3daf0..400a16505ac 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 b8c1ea4d7cd..ed3e6786c62 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 19c35ef1039..56f405ceed8 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/Wits_Pro_A20_DKT_defconfig b/configs/Wits_Pro_A20_DKT_defconfig index 8658ef6b4c9..2a2f26d38f7 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 d2f9f24a196..14b74c4a168 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 febbeb515b1..8fb4712258c 100644 --- a/configs/chromebook_link64_defconfig +++ b/configs/chromebook_link64_defconfig @@ -57,6 +57,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 e2f57824235..9c0f8602f96 100644 --- a/configs/chromebook_link_defconfig +++ b/configs/chromebook_link_defconfig @@ -40,6 +40,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 3e12beae9df..ab2d27eb03f 100644 --- a/configs/chromebook_samus_defconfig +++ b/configs/chromebook_samus_defconfig @@ -40,6 +40,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 0d65a90ebae..51a934fe7ab 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 ec26f999bac..6d18eac559f 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 31ad014709d..a46c46875d2 100644 --- a/configs/controlcenterdc_defconfig +++ b/configs/controlcenterdc_defconfig @@ -34,6 +34,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 f589dec5f45..1008ef73011 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 4a88f5f3c5e..ac50681e199 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 d6068aa43b8..f0b0d698b1b 100644 --- a/configs/db-88f6820-gp_defconfig +++ b/configs/db-88f6820-gp_defconfig @@ -37,6 +37,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 041d04817f6..6f194922514 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 2124273e1c4..695d7d13497 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 d8420ba77e6..bc2792e5331 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 96a45aabd4c..a64a0a34557 100644 --- a/configs/minnowmax_defconfig +++ b/configs/minnowmax_defconfig @@ -47,6 +47,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 f5ac38b47c5..0af00b14be7 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 ea3d17566c9..56a7e4b017f 100644 --- a/configs/som-db5800-som-6867_defconfig +++ b/configs/som-db5800-som-6867_defconfig @@ -43,6 +43,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 a4b40599142..578db22e414 100644 --- a/configs/xilinx_zynqmp_ep_defconfig +++ b/configs/xilinx_zynqmp_ep_defconfig @@ -46,6 +46,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 3616065afdb..4f1524b1491 100644 --- a/configs/xilinx_zynqmp_zcu102_defconfig +++ b/configs/xilinx_zynqmp_zcu102_defconfig @@ -39,6 +39,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 f3ba5a0d314..4b944cb6e1b 100644 --- a/configs/xilinx_zynqmp_zcu102_revB_defconfig +++ b/configs/xilinx_zynqmp_zcu102_revB_defconfig @@ -39,6 +39,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 931defd2aed..4c2aaa0a0b1 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 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 diff --git a/include/config_cmd_all.h b/include/config_cmd_all.h index b1f41abf4f2..2874a7850da 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 3b62449ea5f..ffa8796407c 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 79e11bb6f8c..d8e0dfd8070 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 2014450be83..1db3a633ef3 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 7ec36eb6081..e87b11180a4 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/am57xx_evm.h b/include/configs/am57xx_evm.h index 7a42d79647f..98ce6c52daf 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -99,7 +99,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 14042ada7d0..36475734fcc 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 a04af31284e..f10cddafe0f 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 0890a4db622..292bfb8f7df 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 d6c4a71ab20..d2f7c7cfff8 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 5626061e2ee..9dcb4817077 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 dcbaade54e1..00c5434125c 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 e15b572e411..533d3e3f826 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 5b8500b91ba..9e6c7a797cb 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 276fe1050cf..0705bc5f684 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 04d74acdeb0..87ca36a8e9d 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 5d2e819e786..77619ab3241 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 6f649a62232..8a6b4e63786 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 8a8ee9d351f..5e1867d81ef 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 2dab065be1a..e8aacd3dcd2 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 5408490dc6c..eb80ac5b48e 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 9d3aeefcd0b..ac116edf31a 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 e7fac6d1e1e..15d06bbe458 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 3509c2f6595..05eb5ebf912 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 31ceb5402f7..3e09e88ffe9 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 9b514ff37ac..fefd58f7697 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 a5ed85236e8..d104449e3b0 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 86a4579fbdb..c7fcd86dd5c 100644 --- a/include/configs/xilinx_zynqmp.h +++ b/include/configs/xilinx_zynqmp.h @@ -190,7 +190,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 54eee53572e..5b3aa0904e6 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -2039,7 +2039,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 -- cgit v1.3.1 From a6fb185c70d8ac455ed16d3bae23c3727db07116 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:23 -0600 Subject: scsi: Drop scsi_print_error() 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 Reviewed-by: Bin Meng --- 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(-) (limited to 'include') diff --git a/common/scsi.c b/common/scsi.c index 4896fb9350f..6175e507648 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 3fa14a76b88..f4744718a8e 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 ad961bd225a..f4004a350c6 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 190dacd0f2e..621d9382fc3 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) -- cgit v1.3.1 From 3bf926c0dd01e7beb3a6815b2e0f28e989fe4120 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:24 -0600 Subject: Convert CONFIG_CMD_SATA to Kconfig This converts the following to Kconfig: CONFIG_CMD_SATA Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- 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/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/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 - 64 files changed, 83 insertions(+), 53 deletions(-) (limited to 'include') diff --git a/arch/Kconfig b/arch/Kconfig index 8d5d77ac2bb..7e76abdbf3f 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -76,6 +76,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 4fd60d480e1..1e5dc9afd90 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 89476a663ac..3e48d58fcc7 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 0772b7c4fbc..cdd21a253a7 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 a4b27610493..0bff79adbbb 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_MPC8541CDS bool "Support MPC8541CDS" @@ -126,6 +131,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" @@ -134,12 +140,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" @@ -152,6 +160,7 @@ config TARGET_P1020MBG select SUPPORT_TPL select ARCH_P1020 imply CMD_EEPROM + imply CMD_SATA config TARGET_P1020RDB_PC bool "Support P1020RDB-PC" @@ -159,6 +168,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" @@ -166,6 +176,7 @@ config TARGET_P1020RDB_PD select SUPPORT_TPL select ARCH_P1020 imply CMD_EEPROM + imply CMD_SATA config TARGET_P1020UTM bool "Support P1020UTM" @@ -173,6 +184,7 @@ config TARGET_P1020UTM select SUPPORT_TPL select ARCH_P1020 imply CMD_EEPROM + imply CMD_SATA config TARGET_P1021RDB bool "Support P1021RDB" @@ -180,6 +192,7 @@ config TARGET_P1021RDB select SUPPORT_TPL select ARCH_P1021 imply CMD_EEPROM + imply CMD_SATA config TARGET_P1024RDB bool "Support P1024RDB" @@ -187,6 +200,7 @@ config TARGET_P1024RDB select SUPPORT_TPL select ARCH_P1024 imply CMD_EEPROM + imply CMD_SATA config TARGET_P1025RDB bool "Support P1025RDB" @@ -194,6 +208,7 @@ config TARGET_P1025RDB select SUPPORT_TPL select ARCH_P1025 imply CMD_EEPROM + imply CMD_SATA config TARGET_P2020RDB bool "Support P2020RDB-PC" @@ -201,6 +216,7 @@ config TARGET_P2020RDB select SUPPORT_TPL select ARCH_P2020 imply CMD_EEPROM + imply CMD_SATA config TARGET_P1_TWR bool "Support p1_twr" @@ -211,6 +227,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" @@ -224,6 +241,7 @@ config TARGET_T1024QDS select SUPPORT_SPL select PHYS_64BIT imply CMD_EEPROM + imply CMD_SATA config TARGET_T1023RDB bool "Support T1023RDB" @@ -247,6 +265,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" @@ -254,6 +273,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" @@ -261,6 +281,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" @@ -268,6 +289,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" @@ -275,6 +297,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" @@ -282,6 +305,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" @@ -289,6 +313,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" @@ -296,6 +321,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" @@ -309,6 +335,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" @@ -322,12 +349,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" @@ -357,6 +386,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" @@ -478,6 +508,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 @@ -586,6 +617,7 @@ config ARCH_P1010 select SYS_PPC_E500_USE_DEBUG_TLB select FSL_IFC imply CMD_EEPROM + imply CMD_SATA config ARCH_P1011 bool @@ -614,6 +646,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 @@ -628,6 +661,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 @@ -671,6 +705,7 @@ config ARCH_P1024 select SYS_PPC_E500_USE_DEBUG_TLB select FSL_ELBC imply CMD_EEPROM + imply CMD_SATA config ARCH_P1025 bool @@ -685,6 +720,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 @@ -747,6 +783,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 @@ -782,6 +819,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 @@ -803,6 +841,7 @@ config ARCH_P5020 select SYS_FSL_SEC_COMPAT_4 select SYS_PPC64 select FSL_ELBC + imply CMD_SATA config ARCH_P5040 bool @@ -824,6 +863,7 @@ config ARCH_P5040 select SYS_FSL_SEC_COMPAT_4 select SYS_PPC64 select FSL_ELBC + imply CMD_SATA config ARCH_QEMU_E500 bool @@ -881,6 +921,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 @@ -899,6 +940,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 @@ -921,6 +963,7 @@ config ARCH_T2080 select SYS_FSL_SEC_COMPAT_4 select SYS_PPC64 select FSL_IFC + imply CMD_SATA config ARCH_T2081 bool @@ -962,6 +1005,7 @@ config ARCH_T4160 select SYS_FSL_SEC_COMPAT_4 select SYS_PPC64 select FSL_IFC + imply CMD_SATA config ARCH_T4240 bool @@ -986,6 +1030,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 6758db16f37..90d93379c31 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -734,6 +734,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 38417e79641..32b88fc9d55 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 9cec452cd56..c7f093eaa7d 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 9145ada7c70..e508b3d388d 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 2f3e7b01628..fc21671ce7c 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/cgtqmx6eval_defconfig b/configs/cgtqmx6eval_defconfig index 77dd227f004..94d7e76b182 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 dc587a6d599..a548d8f846a 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 cff3f45f38c..d05f35d9678 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 f1550893499..d2af5070540 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 9e7e89e6595..99533b9a8d3 100644 --- a/configs/db-mv784mp-gp_defconfig +++ b/configs/db-mv784mp-gp_defconfig @@ -21,6 +21,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 cc4a74ca529..afcaf585302 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 572735616b8..6e2f5859607 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 a54279978fb..32bd271209c 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 a19d0937108..baa509d48ee 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 edf4b6377a4..ebfa8430614 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 afacea7e718..3f8b98ebb9a 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 ac8f9c667ca..90a238cacf2 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 3bf55058d72..7e52bdc9174 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 b4b32838298..95a14cabc7f 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 fbe033afb13..522f12ceeca 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 46f09d6b60f..53e089a82a1 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 fcced0eb86c..459efb560c2 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 607b9266d2f..7afbc9096f5 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 18b6b4e13e6..470bb72fcb2 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 220b07040e5..0dc062a0944 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 3d12c84ce98..2ee6c6442f7 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 b008e3d9e28..967c83c53ba 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 a6fa6a8e264..f192181c084 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 2209cfdb96c..2e3a8c1184c 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 3953145030f..86f7880ff18 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 0035e67544b..350dacaa388 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 e792ec5c9dd..9edf19081c5 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 fdafeeb38f8..0e70aa83ea6 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 dc3ebfa7fab..f69746b4da8 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 0d9cdfb510e..ed3b0f7202f 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 8579290e81d..9a7aa811963 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 f320792cfd4..66ee167f96b 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 8be586b51f8..b4006a37e0f 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/cgtqmx6eval.h b/include/configs/cgtqmx6eval.h index cad1357f5cf..5d797b4403b 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 dd8010cd485..1d9c1650d55 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 6641408fcbb..072650dfaec 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 7bbe31ceea0..92e6ee0033d 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 a23da191ab2..6079540bc95 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 821aa9dec14..187ead3e4b7 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 2227eead62b..de08f2c7ccf 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 51812257e19..a92c2283348 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 1b6d868d044..c82e426a61c 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 00b84f757a4..576b7b07db6 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 1f1bf15af7b..041159806b8 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 0582fa36883..7aeae7b1fdc 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 71b4f40921f..a72a57c9046 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 fd644f22da1..dffb15aea91 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 3e09e88ffe9..9276cf9734c 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 260cdee0011..6d8c78f76b0 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 84ca1c443e4..79f6b162f7f 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 27cae9d5283..94e207c8c4b 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 d84aa1679eb..aef4563eded 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 2a6c6fbb703..afc5edf33b4 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 50220e14e86..181408c4429 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -312,7 +312,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 -- cgit v1.3.1 From 10e40d54b38b9b1916c35fc5c4ed2eff4b4bf117 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:25 -0600 Subject: Kconfig: Add CONFIG_SATA to enable SATA 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 Reviewed-by: Bin Meng --- 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 | 13 +++++++++++++ fs/fat/fat.c | 2 +- include/config_distro_bootcmd.h | 6 +++--- include/config_fallbacks.h | 2 +- 22 files changed, 38 insertions(+), 24 deletions(-) (limited to 'include') diff --git a/api/api_storage.c b/api/api_storage.c index 8bed2f3c91f..6fc6f44925c 100644 --- a/api/api_storage.c +++ b/api/api_storage.c @@ -63,7 +63,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 84bc2134fef..1f2739e8645 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 b7cb434bd7a..fc69172b0ba 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 74bdd24ed1e..9e83b4221e0 100644 --- a/arch/arm/imx-common/cpu.c +++ b/arch/arm/imx-common/cpu.c @@ -278,7 +278,7 @@ void arch_preboot_os(void) #if defined(CONFIG_PCIE_IMX) imx_pcie_remove(); #endif -#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 f5bf67c9903..388fe2b4ef5 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 91e96ab0961..2dab906f445 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 c0a8b6423ee..74f652e025a 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 ab8b2be19b6..1145af53d73 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 24956a8a94e..fe7db91dd8d 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 6b950eeb218..40ee1b61e95 100644 --- a/board/gateworks/gw_ventana/gw_ventana.c +++ b/board/gateworks/gw_ventana/gw_ventana.c @@ -633,7 +633,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 f6972c2d149..17c2b13ef2e 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 7c49ddfc4b8..166b93f0c52 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 69467ca8958..87e24471cea 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 eb7ab657ec6..d2cbbaa23e6 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 2c9dc8b7c55..438bc0e7431 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 90d93379c31..c80ac364ead 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -736,6 +736,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 8540fbc9fa6..fdf5c31b1c9 100644 --- a/common/Makefile +++ b/common/Makefile @@ -79,7 +79,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 d1647c83006..ee055ddf155 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 4c2aaa0a0b1..ed7fa88bf5f 100644 --- a/drivers/block/Kconfig +++ b/drivers/block/Kconfig @@ -19,6 +19,19 @@ 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 diff --git a/fs/fat/fat.c b/fs/fat/fat.c index a71bad1cbcf..9ad18f96ff0 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 4b2c493ae30..d8dab8e46a4 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 2656c75b300..d1411f05508 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) || \ -- cgit v1.3.1 From 043682422c3baccba5a935cfe8a7b856ce076dff Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:28 -0600 Subject: dm: scsi: Rearrange header file for driver model 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 Reviewed-by: Bin Meng --- include/scsi.h | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) (limited to 'include') diff --git a/include/scsi.h b/include/scsi.h index 621d9382fc3..f94b2ef5144 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 */ -- cgit v1.3.1 From aae5ec34032610f2144542fd1b30b6a5cc559d79 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:29 -0600 Subject: dm: scsi: Rename struct SCSI_cmd_block to struct scsi_cmd This name should be lower case. Also the _block suffix is superfluous. Rename it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- drivers/usb/emul/sandbox_flash.c | 2 +- include/scsi.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/drivers/usb/emul/sandbox_flash.c b/drivers/usb/emul/sandbox_flash.c index 73fa82b8e61..98d20c0bc15 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 f94b2ef5144..182665dd0cd 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] -- cgit v1.3.1 From b9560ad649b8c523bf303cf9ba981e498988c5d9 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:30 -0600 Subject: dm: scsi: Drop the ccb typedef 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 Reviewed-by: Bin Meng --- 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(-) (limited to 'include') diff --git a/common/usb_storage.c b/common/usb_storage.c index 03171f74cb0..df0b0573087 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 f4744718a8e..29835f06d3a 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 f4004a350c6..d943d1f9daf 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 6175e507648..5f5652b9e03 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 182665dd0cd..bc5be974655 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); /*************************************************************************** -- cgit v1.3.1 From 2c9f9efb3d43568e5e5843c600e8bfc2d42ac23e Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:32 -0600 Subject: dm: ahci: Rename struct ahci_probe_ent 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 Reviewed-by: Bin Meng --- 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(-) (limited to 'include') diff --git a/board/highbank/ahci.c b/board/highbank/ahci.c index 1578a33fd1a..dadfbdd3155 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 2cc604b3f48..2caa29b4c5a 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 c306e927db1..78572a5b73a 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 4876b41e901..1f441d1c80d 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@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; -- cgit v1.3.1 From 4b62b2ff53e48ba31d341507c09951f8de353f99 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:33 -0600 Subject: dm: sata: Move ataid into struct ahci_uc_priv 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 Reviewed-by: Bin Meng --- drivers/ata/ahci.c | 50 +++++++++++++++++++++++++++----------------------- include/ahci.h | 1 + 2 files changed, 28 insertions(+), 23 deletions(-) (limited to 'include') diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 2caa29b4c5a..3fb41de4c99 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 1f441d1c80d..4262ab75c88 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; -- cgit v1.3.1 From 7cf1afce7fa3fe64189020fe14b93f7326dd0758 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:37 -0600 Subject: dm: ahci: Unwind the confusing init code 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 here, add a comment to the top of the file explaining what ahci.c does. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- 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 | 14 ++++++++++++++ include/scsi.h | 4 +--- 6 files changed, 42 insertions(+), 19 deletions(-) (limited to 'include') diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 4830bcdca00..e9867656a9e 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 @@ -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 e634df5e3ce..eadd77944c1 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 f55ba596660..7d61a546d75 100644 --- a/drivers/ata/sata_ceva.c +++ b/drivers/ata/sata_ceva.c @@ -116,7 +116,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 e4ee44bb4c3..40c5044f093 100644 --- a/drivers/scsi/scsi-uclass.c +++ b/drivers/scsi/scsi-uclass.c @@ -13,16 +13,8 @@ #include #include -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 4262ab75c88..ec5b0c7d9d7 100644 --- a/include/ahci.h +++ b/include/ahci.h @@ -179,4 +179,18 @@ 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 + */ +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 + */ +int achi_start_ports_dm(struct udevice *dev); + #endif diff --git a/include/scsi.h b/include/scsi.h index bc5be974655..cd1b240855f 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 -- cgit v1.3.1 From 4279efc4c949116535bb99f4aa74260d93f82b92 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:38 -0600 Subject: dm: ahci: Drop use of probe_ent 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 Reviewed-by: Bin Meng --- drivers/ata/ahci.c | 73 ++++++++++++++++++++++++++++++-------------------- drivers/ata/dwc_ahci.c | 2 +- include/ahci.h | 7 +++++ 3 files changed, 52 insertions(+), 30 deletions(-) (limited to 'include') diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index e9867656a9e..2f77e6030d5 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -428,25 +428,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 +989,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 +1002,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 +1018,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 +1060,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 eadd77944c1..401201717f8 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 ec5b0c7d9d7..3d61ad1fce9 100644 --- a/include/ahci.h +++ b/include/ahci.h @@ -193,4 +193,11 @@ 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 + */ +int ahci_init_dm(struct udevice *dev, void __iomem *base); + #endif -- cgit v1.3.1 From 322f73f473d921dbdd0fe11bd62db6a00e5b133c Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:39 -0600 Subject: dm: scsi: Add operations Add operations for SCSI. These are not yet implemented, but we have the struct. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- include/scsi.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'include') diff --git a/include/scsi.h b/include/scsi.h index cd1b240855f..d2fa8a51952 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); -- cgit v1.3.1 From 4682c8a19b4eb69f7ad51df3f543375583ce878a Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:40 -0600 Subject: dm: scsi: Add a device pointer to scan_exec(), scsi_bus_reset() 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 Reviewed-by: Bin Meng --- arch/arm/mach-omap2/sata.c | 4 +++- cmd/scsi.c | 2 +- drivers/ata/ahci.c | 15 ++++++++++++--- drivers/scsi/sandbox_scsi.c | 5 +++-- drivers/scsi/scsi.c | 31 +++++++++++++++++++------------ include/scsi.h | 4 ++-- 6 files changed, 40 insertions(+), 21 deletions(-) (limited to 'include') diff --git a/arch/arm/mach-omap2/sata.c b/arch/arm/mach-omap2/sata.c index 0c8268905aa..dc68896d1b0 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 4213ec86775..46171e5436a 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 2f77e6030d5..c3b5f2af340 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) @@ -926,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]) { @@ -1128,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 d943d1f9daf..ac60ae01ca7 100644 --- a/drivers/scsi/sandbox_scsi.c +++ b/drivers/scsi/sandbox_scsi.c @@ -11,15 +11,16 @@ #include #include -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 e3d169045be..9232f3a8243 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 d2fa8a51952..af07dbe6dbc 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 -- cgit v1.3.1 From 8eab1a58dd53cbf89dca54f91cf3fbb51d714644 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:41 -0600 Subject: dm: scsi: Document and rename the scsi_scan() parameter 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 Reviewed-by: Bin Meng --- 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(-) (limited to 'include') diff --git a/arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c b/arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c index 144f2c368d0..e11d3a197d0 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 0943e833d74..aee1ffa7d43 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 55999ed2266..1af22078679 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 46171e5436a..570971891ec 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 5476206131d..bac11f64f13 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 9232f3a8243..f3f8d31e1a4 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 af07dbe6dbc..20f6932602b 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 */ -- cgit v1.3.1 From f6ab5a92acc78371fc088075b64bd394d1f0d45f Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:43 -0600 Subject: dm: scsi: Add operations for SCSI devices 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 Reviewed-by: Bin Meng --- 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(-) (limited to 'include') diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 9c7b043aa2b..5a20b97c4b8 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 401201717f8..f6147989b1c 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 7d61a546d75..d582e5ba80f 100644 --- a/drivers/ata/sata_ceva.c +++ b/drivers/ata/sata_ceva.c @@ -144,6 +144,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 40c5044f093..31e89992971 100644 --- a/drivers/scsi/scsi-uclass.c +++ b/drivers/scsi/scsi-uclass.c @@ -13,6 +13,26 @@ #include #include +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 20f6932602b..9cdd13c795d 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 */ -- cgit v1.3.1 From 5c56176318c8a602fa78813ac273f16a10278a2d Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:45 -0600 Subject: dm: scsi: Split out the bus scanning code 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 Reviewed-by: Bin Meng --- drivers/scsi/scsi.c | 35 +++++++++++++++++++++++------------ include/scsi.h | 8 ++++++++ 2 files changed, 31 insertions(+), 12 deletions(-) (limited to 'include') diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index 80c5ce699e6..2b87548bd31 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 9cdd13c795d..7173912de4a 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); -- cgit v1.3.1 From 681357ffd9fe4528d020a878ef6ee61f519d8d85 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 14 Jun 2017 21:28:46 -0600 Subject: dm: ahci: Add a driver for SCSI on AHCI 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 Reviewed-by: Bin Meng --- drivers/ata/ahci.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/ahci.h | 22 +++++++++++++++++++++ 2 files changed, 79 insertions(+) (limited to 'include') diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 3528a1f3da3..6da412d178c 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -19,10 +19,13 @@ #include #include #include +#include #include #include #include #include +#include +#include static int ata_io_flush(struct ahci_uc_priv *uc_priv, u8 port); @@ -1142,10 +1145,64 @@ 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) +{ +#ifdef CONFIG_SCSI_AHCI_PLAT + return -ENOSYS; /* TODO(sjg@chromium.org): Support non-PCI AHCI */ +#else + 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; +#endif + + 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 3d61ad1fce9..818f34464e2 100644 --- a/include/ahci.h +++ b/include/ahci.h @@ -200,4 +200,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 -- cgit v1.3.1 From 6c519f2dc4a59a9d81f087d990e24d1e6444c86d Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 16 Jun 2017 12:51:42 -0600 Subject: display_options: Refactor to allow obtaining the banner Move the display options code into a separate function so that the U-Boot banner can be obtained from other code. Adjust the 'version' command to use it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Tested-by: Bin Meng Tested-by: Stephen Warren --- cmd/version.c | 4 +++- include/display_options.h | 19 +++++++++++++++++++ lib/display_options.c | 36 +++++++++++++++++++++++++++++++----- 3 files changed, 53 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/cmd/version.c b/cmd/version.c index 1be0667f093..15aab5dc184 100644 --- a/cmd/version.c +++ b/cmd/version.c @@ -17,7 +17,9 @@ const char __weak version_string[] = U_BOOT_VERSION_STRING; static int do_version(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { - printf("\n%s\n", version_string); + char buf[DISPLAY_OPTIONS_BANNER_LENGTH]; + + printf(display_options_get_banner(false, buf, sizeof(buf))); #ifdef CC_VERSION_STRING puts(CC_VERSION_STRING "\n"); #endif diff --git a/include/display_options.h b/include/display_options.h index ac44c459b3b..d9c8f6dbd4a 100644 --- a/include/display_options.h +++ b/include/display_options.h @@ -56,4 +56,23 @@ int print_buffer(ulong addr, const void *data, uint width, uint count, */ int display_options(void); +/* Suggested length of the buffer to pass to display_options_get_banner() */ +#define DISPLAY_OPTIONS_BANNER_LENGTH 200 + +/** + * display_options_get_banner() - Get the U-Boot banner as a string + * + * This returns the U-Boot banner string + * + * @newlines: true to include two newlines at the start + * @buf: place to put string + * @size: Size of buf (string is truncated to fit) + * @return buf + */ +char *display_options_get_banner(bool newlines, char *buf, int size); + +/* This function is used for testing only */ +char *display_options_get_banner_priv(bool newlines, const char *build_tag, + char *buf, int size); + #endif diff --git a/lib/display_options.c b/lib/display_options.c index 29343fc00e3..4ea27ca99d3 100644 --- a/lib/display_options.c +++ b/lib/display_options.c @@ -13,13 +13,39 @@ #include #include -int display_options (void) +char *display_options_get_banner_priv(bool newlines, const char *build_tag, + char *buf, int size) { -#if defined(BUILD_TAG) - printf ("\n\n%s, Build: %s\n\n", version_string, BUILD_TAG); -#else - printf ("\n\n%s\n\n", version_string); + int len; + + len = snprintf(buf, size, "%s%s", newlines ? "\n\n" : "", + version_string); + if (build_tag && len < size) + len += snprintf(buf + len, size - len, ", Build: %s", + build_tag); + if (len > size - 3) + len = size - 3; + strcpy(buf + len, "\n\n"); + + return buf; +} + +#ifndef BUILD_TAG +#define BUILD_TAG NULL #endif + +char *display_options_get_banner(bool newlines, char *buf, int size) +{ + return display_options_get_banner_priv(newlines, BUILD_TAG, buf, size); +} + +int display_options(void) +{ + char buf[DISPLAY_OPTIONS_BANNER_LENGTH]; + + display_options_get_banner(true, buf, sizeof(buf)); + printf("%s", buf); + return 0; } -- cgit v1.3.1 From b0895384bebb6a4a2ea5bbdb0941b771b5875012 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Thu, 15 Jun 2017 21:37:50 -0600 Subject: Allow displaying the U-Boot banner on a video display At present the U-Boot banner is only displayed on the serial console. If this is not visible to the user, the banner does not show. Some devices have a video display which can usefully display this information. Add a banner which is printed after relocation only on non-serial devices if CONFIG_DISPLAY_BOARDINFO_LATE is defined. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Tested-by: Bin Meng Tested-by: Stephen Warren --- common/board_r.c | 1 + common/console.c | 17 +++++++++++++---- include/console.h | 12 ++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/common/board_r.c b/common/board_r.c index 3341a528b01..ecca1edb04e 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -829,6 +829,7 @@ static init_fnc_t init_sequence_r[] = { #endif console_init_r, /* fully init console as a device */ #ifdef CONFIG_DISPLAY_BOARDINFO_LATE + console_announce_r, show_board_info, #endif #ifdef CONFIG_ARCH_MISC_INIT diff --git a/common/console.c b/common/console.c index 1232808df52..60e7a94a56d 100644 --- a/common/console.c +++ b/common/console.c @@ -202,7 +202,6 @@ static void console_putc(int file, const char c) } } -#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER) static void console_puts_noserial(int file, const char *s) { int i; @@ -214,7 +213,6 @@ static void console_puts_noserial(int file, const char *s) dev->puts(dev, s); } } -#endif static void console_puts(int file, const char *s) { @@ -248,13 +246,11 @@ static inline void console_putc(int file, const char c) stdio_devices[file]->putc(stdio_devices[file], c); } -#if CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER) static inline void console_puts_noserial(int file, const char *s) { if (strcmp(stdio_devices[file]->name, "serial") != 0) stdio_devices[file]->puts(stdio_devices[file], s); } -#endif static inline void console_puts(int file, const char *s) { @@ -699,6 +695,19 @@ static void console_update_silent(void) #endif } +int console_announce_r(void) +{ +#if !CONFIG_IS_ENABLED(PRE_CONSOLE_BUFFER) + char buf[DISPLAY_OPTIONS_BANNER_LENGTH]; + + display_options_get_banner(false, buf, sizeof(buf)); + + console_puts_noserial(stdout, buf); +#endif + + return 0; +} + /* Called before relocation - use serial functions */ int console_init_f(void) { diff --git a/include/console.h b/include/console.h index 3d37f6a53bf..cea29ed6dc4 100644 --- a/include/console.h +++ b/include/console.h @@ -42,6 +42,18 @@ void console_record_reset(void); */ void console_record_reset_enable(void); +/** + * console_announce_r() - print a U-Boot console on non-serial consoles + * + * When U-Boot starts up with a display it generally does not announce itself + * on the display. The banner is instead emitted on the UART before relocation. + * This function prints a banner on devices which (we assume) did not receive + * it before relocation. + * + * @return 0 (meaning no errors) + */ +int console_announce_r(void); + /* * CONSOLE multiplexing. */ -- cgit v1.3.1 From d63b5b4fbb401e2ffbce5083c7f3d9f8045651ba Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Thu, 15 Jun 2017 21:37:53 -0600 Subject: sandbox: Enable more console options Enable the pre-console buffer, displaying the model and post-relocation console announce on sandbox. Also add a model name to the device tree. This allows testing of these features. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Tested-by: Stephen Warren --- arch/sandbox/dts/sandbox.dts | 1 + common/Kconfig | 2 +- configs/sandbox_defconfig | 2 ++ include/configs/sandbox.h | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts index 40f423da256..0aba6c9a6da 100644 --- a/arch/sandbox/dts/sandbox.dts +++ b/arch/sandbox/dts/sandbox.dts @@ -5,6 +5,7 @@ / { #address-cells = <1>; #size-cells = <1>; + model = "sandbox"; aliases { eth5 = "/eth@90000000"; diff --git a/common/Kconfig b/common/Kconfig index 086b6769376..361346b0929 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -488,7 +488,7 @@ config DISPLAY_CPUINFO config DISPLAY_BOARDINFO bool "Display information about the board during start up" - default y if ARM || M68K || MIPS || PPC || XTENSA + default y if ARM || M68K || MIPS || PPC || SANDBOX || XTENSA help Display information about the board that U-Boot is running on when U-Boot starts up. The board function checkboard() is called diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index 6a6e7741d8f..7a1b9ef0528 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -14,6 +14,8 @@ CONFIG_BOOTSTAGE_STASH_SIZE=0x4096 CONFIG_CONSOLE_RECORD=y CONFIG_CONSOLE_RECORD_OUT_SIZE=0x1000 CONFIG_SILENT_CONSOLE=y +CONFIG_PRE_CONSOLE_BUFFER=y +CONFIG_PRE_CON_BUF_ADDR=0 CONFIG_CMD_CPU=y CONFIG_CMD_LICENSE=y CONFIG_CMD_BOOTZ=y diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h index 9276cf9734c..1e8404cbdf2 100644 --- a/include/configs/sandbox.h +++ b/include/configs/sandbox.h @@ -41,6 +41,7 @@ #define CONFIG_SYS_LONGHELP /* #undef to save memory */ #define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buffer Size */ +#define CONFIG_DISPLAY_BOARDINFO_LATE /* Print Buffer Size */ #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16) -- cgit v1.3.1 From 8c293d6ac9c9f698a2b5db8def9d1cef725b5011 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 12 Jun 2017 06:21:28 -0600 Subject: dm: core: Add ofnode_read_string_count() This provides a way to find the number of strings in a string list. Add it and also fix up the comment for ofnode_read_string_index(). Signed-off-by: Simon Glass Tested-by: Marcel Ziswiler Tested-on: Beaver, Jetson-TK1 --- drivers/core/ofnode.c | 10 ++++++++++ include/dm/of_access.h | 18 ++++++++++++++++++ include/dm/ofnode.h | 12 +++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index ac312d65465..79c80df7f4a 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -260,6 +260,16 @@ int ofnode_read_string_index(ofnode node, const char *property, int index, } } +int ofnode_read_string_count(ofnode node, const char *property) +{ + if (ofnode_is_np(node)) { + return of_property_count_strings(ofnode_to_np(node), property); + } else { + return fdt_stringlist_count(gd->fdt_blob, + ofnode_to_offset(node), property); + } +} + static void ofnode_from_fdtdec_phandle_args(struct fdtdec_phandle_args *in, struct ofnode_phandle_args *out) { diff --git a/include/dm/of_access.h b/include/dm/of_access.h index 142f0f43c93..d2827001e2b 100644 --- a/include/dm/of_access.h +++ b/include/dm/of_access.h @@ -260,6 +260,24 @@ static inline int of_property_read_string_index(const struct device_node *np, return rc < 0 ? rc : 0; } +/** + * of_property_count_strings() - Find and return the number of strings from a + * multiple strings property. + * @np: device node from which the property value is to be read. + * @propname: name of the property to be searched. + * + * Search for a property in a device tree node and retrieve the number of null + * terminated string contain in it. Returns the number of strings on + * success, -EINVAL if the property does not exist, -ENODATA if property + * does not have a value, and -EILSEQ if the string is not null-terminated + * within the length of the property data. + */ +static inline int of_property_count_strings(const struct device_node *np, + const char *propname) +{ + return of_property_read_string_helper(np, propname, NULL, 0, 0); +} + /** * of_parse_phandle - Resolve a phandle property to a device_node pointer * @np: Pointer to device node holding phandle property diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h index 149622a0b2c..d261a61e914 100644 --- a/include/dm/ofnode.h +++ b/include/dm/ofnode.h @@ -359,7 +359,7 @@ int ofnode_stringlist_search(ofnode node, const char *propname, const char *string); /** - * fdt_stringlist_get() - obtain the string at a given index in a string list + * ofnode_read_string_index() - obtain an indexed string from a string list * * Note that this will successfully extract strings from properties with * non-NUL-terminated values. For example on small-valued cell properties @@ -379,6 +379,16 @@ int ofnode_stringlist_search(ofnode node, const char *propname, int ofnode_read_string_index(ofnode node, const char *propname, int index, const char **outp); +/** + * ofnode_read_string_count() - find the number of strings in a string list + * + * @node: node to check + * @propname: name of the property containing the string list + * @return: + * number of strings in the list, or -ve error value if not found + */ +int ofnode_read_string_count(ofnode node, const char *property); + /** * ofnode_parse_phandle_with_args() - Find a node pointed by phandle in a list * -- cgit v1.3.1 From a44810123f9ef069587beacdce7d6f488cf42973 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 12 Jun 2017 06:21:29 -0600 Subject: dm: core: Add dev_read_resource() to read device resources Add a function which reads resources from a device, such as the device hardware address. This uses the "reg" property in the device. Unlike other functions there is little sense in inlining this when livetree is not being used because it has some logic in it and this would just bloat the code size. Signed-off-by: Simon Glass Tested-by: Marcel Ziswiler Tested-on: Beaver, Jetson-TK1 --- drivers/core/Makefile | 2 +- drivers/core/read_extra.c | 37 +++++++++++++++++++++++++++++++++++++ include/dm/read.h | 12 ++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 drivers/core/read_extra.c (limited to 'include') diff --git a/drivers/core/Makefile b/drivers/core/Makefile index 435cf98ae18..fd2d4de0c83 100644 --- a/drivers/core/Makefile +++ b/drivers/core/Makefile @@ -15,4 +15,4 @@ obj-$(CONFIG_OF_LIVE) += of_access.o of_addr.o ifndef CONFIG_DM_DEV_READ_INLINE obj-$(CONFIG_OF_CONTROL) += read.o endif -obj-$(CONFIG_OF_CONTROL) += of_extra.o ofnode.o +obj-$(CONFIG_OF_CONTROL) += of_extra.o ofnode.o read_extra.o diff --git a/drivers/core/read_extra.c b/drivers/core/read_extra.c new file mode 100644 index 00000000000..a6d2f342d9d --- /dev/null +++ b/drivers/core/read_extra.c @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2017 Google, Inc + * Written by Simon Glass + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include + +int dev_read_resource(struct udevice *dev, uint index, struct resource *res) +{ + ofnode node = dev_ofnode(dev); + +#ifdef CONFIG_OF_LIVE + if (ofnode_is_np(node)) { + return of_address_to_resource(ofnode_to_np(node), index, res); + } else +#endif + { + struct fdt_resource fres; + int ret; + + ret = fdt_get_resource(gd->fdt_blob, ofnode_to_offset(node), + "reg", index, &fres); + if (ret < 0) + return -EINVAL; + memset(res, '\0', sizeof(*res)); + res->start = fres.start; + res->end = fres.end; + + return 0; + } +} diff --git a/include/dm/read.h b/include/dm/read.h index 8c9846eaf26..65d5d1f3577 100644 --- a/include/dm/read.h +++ b/include/dm/read.h @@ -14,6 +14,8 @@ #include #include +struct resource; + #if CONFIG_IS_ENABLED(OF_LIVE) static inline const struct device_node *dev_np(struct udevice *dev) { @@ -42,6 +44,16 @@ static inline bool dev_of_valid(struct udevice *dev) return ofnode_valid(dev_ofnode(dev)); } +/** + * dev_read_resource() - obtain an indexed resource from a device. + * + * @dev: devuce to examine + * @index index of the resource to retrieve (0 = first) + * @res returns the resource + * @return 0 if ok, negative on error + */ +int dev_read_resource(struct udevice *dev, uint index, struct resource *res); + #ifndef CONFIG_DM_DEV_READ_INLINE /** * dev_read_u32_default() - read a 32-bit integer from a device's DT property -- cgit v1.3.1 From f7d6fcf7aead384ea39bc7aba581e912c3759eaa Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 12 Jun 2017 06:21:30 -0600 Subject: dm: core: Add dev_read_enabled() to check if a device is enabled This function allows a device's status to be read. This indicates whether the device should be enabled or disabled. Note: In normal operation disabled devices will not be present in the driver-model tree. Signed-off-by: Simon Glass Tested-by: Marcel Ziswiler Tested-on: Beaver, Jetson-TK1 --- drivers/core/read.c | 11 +++++++++++ include/dm/read.h | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) (limited to 'include') diff --git a/drivers/core/read.c b/drivers/core/read.c index 3131e5379c9..10807673136 100644 --- a/drivers/core/read.c +++ b/drivers/core/read.c @@ -138,3 +138,14 @@ const uint8_t *dev_read_u8_array_ptr(struct udevice *dev, const char *propname, { return ofnode_read_u8_array_ptr(dev_ofnode(dev), propname, sz); } + +int dev_read_enabled(struct udevice *dev) +{ + ofnode node = dev_ofnode(dev); + + if (ofnode_is_np(node)) + return of_device_is_available(ofnode_to_np(node)); + else + return fdtdec_get_is_enabled(gd->fdt_blob, + ofnode_to_offset(node)); +} diff --git a/include/dm/read.h b/include/dm/read.h index 65d5d1f3577..cea1c16a006 100644 --- a/include/dm/read.h +++ b/include/dm/read.h @@ -315,6 +315,19 @@ ofnode dev_read_next_subnode(ofnode node); const uint8_t *dev_read_u8_array_ptr(struct udevice *dev, const char *propname, size_t sz); +/** + * dev_read_enabled() - check whether a node is enabled + * + * This looks for a 'status' property. If this exists, then returns 1 if + * the status is 'ok' and 0 otherwise. If there is no status property, + * it returns 1 on the assumption that anything mentioned should be enabled + * by default. + * + * @dev: device to examine + * @return integer value 0 (not enabled) or 1 (enabled) + */ +int dev_read_enabled(struct udevice *dev); + #else /* CONFIG_DM_DEV_READ_INLINE is enabled */ static inline int dev_read_u32_default(struct udevice *dev, @@ -432,6 +445,11 @@ static inline const uint8_t *dev_read_u8_array_ptr(struct udevice *dev, return ofnode_read_u8_array_ptr(dev_ofnode(dev), propname, sz); } +static inline int dev_read_enabled(struct udevice *dev) +{ + return fdtdec_get_is_enabled(gd->fdt_blob, dev_of_offset(dev)); +} + #endif /* CONFIG_DM_DEV_READ_INLINE */ /** -- cgit v1.3.1 From 878d68c0c357ff62120d5783d950f34ecd1065d9 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 12 Jun 2017 06:21:31 -0600 Subject: dm: core: Add functions to obtain node's address/size cells The of_n_addr_cells() and of_n_size_cells() functions are useful for getting the size of addresses in a node, but in a few places U-Boot needs to obtain the actual property value for a node without walking up the stack. Add functions for this and just the existing code to use it. Add a comment to the existing ofnode functions which do not do the right thing with a flat tree. This fixes a problem reading PCI addresses. Signed-off-by: Simon Glass Tested-by: Marcel Ziswiler Tested-on: Beaver, Jetson-TK1 --- drivers/core/of_access.c | 24 ++++++++++++++++++++++++ drivers/core/ofnode.c | 18 +++++++++++++++++- drivers/core/read.c | 10 ++++++++++ drivers/core/regmap.c | 4 ++-- drivers/pci/pci-uclass.c | 6 +++--- include/dm/of_access.h | 20 ++++++++++++++++++++ include/dm/ofnode.h | 20 ++++++++++++++++++++ include/dm/read.h | 32 ++++++++++++++++++++++++++++++++ 8 files changed, 128 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/drivers/core/of_access.c b/drivers/core/of_access.c index 93a65604967..2bb23eef885 100644 --- a/drivers/core/of_access.c +++ b/drivers/core/of_access.c @@ -96,6 +96,30 @@ int of_n_size_cells(const struct device_node *np) return OF_ROOT_NODE_SIZE_CELLS_DEFAULT; } +int of_simple_addr_cells(const struct device_node *np) +{ + const __be32 *ip; + + ip = of_get_property(np, "#address-cells", NULL); + if (ip) + return be32_to_cpup(ip); + + /* Return a default of 2 to match fdt_address_cells()*/ + return 2; +} + +int of_simple_size_cells(const struct device_node *np) +{ + const __be32 *ip; + + ip = of_get_property(np, "#size-cells", NULL); + if (ip) + return be32_to_cpup(ip); + + /* Return a default of 2 to match fdt_size_cells()*/ + return 2; +} + struct property *of_find_property(const struct device_node *np, const char *name, int *lenp) { diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 79c80df7f4a..da7c477c81d 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -552,7 +552,7 @@ int ofnode_read_addr_cells(ofnode node) { if (ofnode_is_np(node)) return of_n_addr_cells(ofnode_to_np(node)); - else + else /* NOTE: this call should walk up the parent stack */ return fdt_address_cells(gd->fdt_blob, ofnode_to_offset(node)); } @@ -560,6 +560,22 @@ int ofnode_read_size_cells(ofnode node) { if (ofnode_is_np(node)) return of_n_size_cells(ofnode_to_np(node)); + else /* NOTE: this call should walk up the parent stack */ + return fdt_size_cells(gd->fdt_blob, ofnode_to_offset(node)); +} + +int ofnode_read_simple_addr_cells(ofnode node) +{ + if (ofnode_is_np(node)) + return of_simple_addr_cells(ofnode_to_np(node)); + else + return fdt_address_cells(gd->fdt_blob, ofnode_to_offset(node)); +} + +int ofnode_read_simple_size_cells(ofnode node) +{ + if (ofnode_is_np(node)) + return of_simple_size_cells(ofnode_to_np(node)); else return fdt_size_cells(gd->fdt_blob, ofnode_to_offset(node)); } diff --git a/drivers/core/read.c b/drivers/core/read.c index 10807673136..36293ba3263 100644 --- a/drivers/core/read.c +++ b/drivers/core/read.c @@ -94,6 +94,16 @@ int dev_read_size_cells(struct udevice *dev) return ofnode_read_size_cells(dev_ofnode(dev)); } +int dev_read_simple_addr_cells(struct udevice *dev) +{ + return ofnode_read_simple_addr_cells(dev_ofnode(dev)); +} + +int dev_read_simple_size_cells(struct udevice *dev) +{ + return ofnode_read_simple_size_cells(dev_ofnode(dev)); +} + int dev_read_phandle(struct udevice *dev) { ofnode node = dev_ofnode(dev); diff --git a/drivers/core/regmap.c b/drivers/core/regmap.c index 749d9133721..d4e16a27ef3 100644 --- a/drivers/core/regmap.c +++ b/drivers/core/regmap.c @@ -72,8 +72,8 @@ int regmap_init_mem(struct udevice *dev, struct regmap **mapp) ofnode node = dev_ofnode(dev); struct resource r; - addr_len = dev_read_addr_cells(dev->parent); - size_len = dev_read_size_cells(dev->parent); + addr_len = dev_read_simple_addr_cells(dev->parent); + size_len = dev_read_simple_size_cells(dev->parent); both_len = addr_len + size_len; len = dev_read_size(dev, "reg"); diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index b36ef3338ce..42230405412 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -766,9 +766,9 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node, prop = ofnode_read_prop(node, "ranges", &len); if (!prop) return -EINVAL; - pci_addr_cells = ofnode_read_addr_cells(node); - addr_cells = ofnode_read_addr_cells(parent_node); - size_cells = ofnode_read_size_cells(node); + pci_addr_cells = ofnode_read_simple_addr_cells(node); + addr_cells = ofnode_read_simple_addr_cells(parent_node); + size_cells = ofnode_read_simple_size_cells(node); /* PCI addresses are always 3-cells */ len /= sizeof(u32); diff --git a/include/dm/of_access.h b/include/dm/of_access.h index d2827001e2b..c5ea391aec1 100644 --- a/include/dm/of_access.h +++ b/include/dm/of_access.h @@ -60,6 +60,26 @@ int of_n_addr_cells(const struct device_node *np); */ int of_n_size_cells(const struct device_node *np); +/** + * of_simple_addr_cells() - Get the address cells property in a node + * + * This function matches fdt_address_cells(). + * + * @np: Node pointer to check + * @return value of #address-cells property in this node, or 2 if none + */ +int of_simple_addr_cells(const struct device_node *np); + +/** + * of_simple_size_cells() - Get the size cells property in a node + * + * This function matches fdt_size_cells(). + * + * @np: Node pointer to check + * @return value of #size-cells property in this node, or 2 if none + */ +int of_simple_size_cells(const struct device_node *np); + /** * of_find_property() - find a property in a node * diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h index d261a61e914..c3d8db5b16f 100644 --- a/include/dm/ofnode.h +++ b/include/dm/ofnode.h @@ -561,6 +561,26 @@ int ofnode_read_addr_cells(ofnode node); */ int ofnode_read_size_cells(ofnode node); +/** + * ofnode_read_simple_addr_cells() - Get the address cells property in a node + * + * This function matches fdt_address_cells(). + * + * @np: Node pointer to check + * @return value of #address-cells property in this node, or 2 if none + */ +int ofnode_read_simple_addr_cells(ofnode node); + +/** + * ofnode_read_simple_size_cells() - Get the size cells property in a node + * + * This function matches fdt_size_cells(). + * + * @np: Node pointer to check + * @return value of #size-cells property in this node, or 2 if none + */ +int ofnode_read_simple_size_cells(ofnode node); + /** * ofnode_pre_reloc() - check if a node should be bound before relocation * diff --git a/include/dm/read.h b/include/dm/read.h index cea1c16a006..6dd1634675b 100644 --- a/include/dm/read.h +++ b/include/dm/read.h @@ -230,6 +230,26 @@ int dev_read_addr_cells(struct udevice *dev); */ int dev_read_size_cells(struct udevice *dev); +/** + * dev_read_addr_cells() - Get the address cells property in a node + * + * This function matches fdt_address_cells(). + * + * @dev: devioe to check + * @return number of address cells this node uses + */ +int dev_read_simple_addr_cells(struct udevice *dev); + +/** + * dev_read_size_cells() - Get the size cells property in a node + * + * This function matches fdt_size_cells(). + * + * @dev: devioe to check + * @return number of size cells this node uses + */ +int dev_read_simple_size_cells(struct udevice *dev); + /** * dev_read_phandle() - Get the phandle from a device * @@ -398,10 +418,22 @@ static inline int dev_read_phandle_with_args(struct udevice *dev, static inline int dev_read_addr_cells(struct udevice *dev) { + /* NOTE: this call should walk up the parent stack */ return fdt_address_cells(gd->fdt_blob, dev_of_offset(dev)); } static inline int dev_read_size_cells(struct udevice *dev) +{ + /* NOTE: this call should walk up the parent stack */ + return fdt_size_cells(gd->fdt_blob, dev_of_offset(dev)); +} + +static inline int dev_read_simple_addr_cells(struct udevice *dev) +{ + return fdt_address_cells(gd->fdt_blob, dev_of_offset(dev)); +} + +static inline int dev_read_simple_size_cells(struct udevice *dev) { return fdt_size_cells(gd->fdt_blob, dev_of_offset(dev)); } -- cgit v1.3.1 From 61e51babdb674e4619165cdc180786af7ec75ae9 Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Thu, 22 Jun 2017 16:54:05 +0900 Subject: dm: ofnode: rename ofnode_read_prop() to ofnode_get_property() This function returns the pointer to the value of a node property. The current name ofnode_read_prop() is confusing. Follow the naming of_get_property() from Linux. The return type (const u32 *) is wrong. DT property values can be strings as well as integers. This is why of_get_property/fdt_getprop returns an opaque pointer. Signed-off-by: Masahiro Yamada Acked-by: Simon Glass --- drivers/core/lists.c | 3 +-- drivers/core/ofnode.c | 4 ++-- drivers/core/read.c | 2 +- drivers/misc/cros_ec_sandbox.c | 2 +- drivers/pci/pci-uclass.c | 2 +- drivers/pinctrl/pinctrl-uclass.c | 2 +- include/dm/ofnode.h | 4 ++-- include/dm/read.h | 2 +- 8 files changed, 10 insertions(+), 11 deletions(-) (limited to 'include') diff --git a/drivers/core/lists.c b/drivers/core/lists.c index b79f26dbe6c..6067914e811 100644 --- a/drivers/core/lists.c +++ b/drivers/core/lists.c @@ -141,8 +141,7 @@ int lists_bind_fdt(struct udevice *parent, ofnode node, struct udevice **devp) name = ofnode_get_name(node); dm_dbg("bind node %s\n", name); - compat_list = (const char *)ofnode_read_prop(node, "compatible", - &compat_length); + compat_list = ofnode_get_property(node, "compatible", &compat_length); if (!compat_list) { if (compat_length == -FDT_ERR_NOTFOUND) { dm_dbg("Device '%s' has no compatible string\n", name); diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index d9441c849f0..372d07a0c93 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -432,7 +432,7 @@ int ofnode_decode_display_timing(ofnode parent, int index, return ret; } -const u32 *ofnode_read_prop(ofnode node, const char *propname, int *lenp) +const void *ofnode_get_property(ofnode node, const char *propname, int *lenp) { if (ofnode_is_np(node)) return of_get_property(ofnode_to_np(node), propname, lenp); @@ -503,7 +503,7 @@ int ofnode_read_pci_addr(ofnode node, enum fdt_pci_space type, * #size-cells. They need to be 3 and 2 accordingly. However, * for simplicity we skip the check here. */ - cell = ofnode_read_prop(node, propname, &len); + cell = ofnode_get_property(node, propname, &len); if (!cell) goto fail; diff --git a/drivers/core/read.c b/drivers/core/read.c index 36293ba3263..eafe727f037 100644 --- a/drivers/core/read.c +++ b/drivers/core/read.c @@ -116,7 +116,7 @@ int dev_read_phandle(struct udevice *dev) const u32 *dev_read_prop(struct udevice *dev, const char *propname, int *lenp) { - return ofnode_read_prop(dev_ofnode(dev), propname, lenp); + return ofnode_get_property(dev_ofnode(dev), propname, lenp); } int dev_read_alias_seq(struct udevice *dev, int *devnump) diff --git a/drivers/misc/cros_ec_sandbox.c b/drivers/misc/cros_ec_sandbox.c index c96e26e6b78..5924adee408 100644 --- a/drivers/misc/cros_ec_sandbox.c +++ b/drivers/misc/cros_ec_sandbox.c @@ -197,7 +197,7 @@ static int keyscan_read_fdt_matrix(struct ec_state *ec, ofnode node) int upto; int len; - cell = ofnode_read_prop(node, "linux,keymap", &len); + cell = ofnode_get_property(node, "linux,keymap", &len); ec->matrix_count = len / 4; ec->matrix = calloc(ec->matrix_count, sizeof(*ec->matrix)); if (!ec->matrix) { diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index 42230405412..86df141d607 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -763,7 +763,7 @@ static int decode_regions(struct pci_controller *hose, ofnode parent_node, int len; int i; - prop = ofnode_read_prop(node, "ranges", &len); + prop = ofnode_get_property(node, "ranges", &len); if (!prop) return -EINVAL; pci_addr_cells = ofnode_read_simple_addr_cells(node); diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c index 02e269020df..114952a1da3 100644 --- a/drivers/pinctrl/pinctrl-uclass.c +++ b/drivers/pinctrl/pinctrl-uclass.c @@ -134,7 +134,7 @@ static int pinconfig_post_bind(struct udevice *dev) * If this node has "compatible" property, this is not * a pin configuration node, but a normal device. skip. */ - ofnode_read_prop(node, "compatible", &ret); + ofnode_get_property(node, "compatible", &ret); if (ret >= 0) continue; diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h index c3d8db5b16f..15ad5199c2f 100644 --- a/include/dm/ofnode.h +++ b/include/dm/ofnode.h @@ -473,14 +473,14 @@ int ofnode_decode_display_timing(ofnode node, int index, struct display_timing *config); /** - * ofnode_read_prop()- - read a node property + * ofnode_get_property()- - get a pointer to the value of a node property * * @node: node to read * @propname: property to read * @lenp: place to put length on success * @return pointer to property, or NULL if not found */ -const u32 *ofnode_read_prop(ofnode node, const char *propname, int *lenp); +const void *ofnode_get_property(ofnode node, const char *propname, int *lenp); /** * ofnode_is_available() - check if a node is marked available diff --git a/include/dm/read.h b/include/dm/read.h index 6dd1634675b..b86a2f5fece 100644 --- a/include/dm/read.h +++ b/include/dm/read.h @@ -446,7 +446,7 @@ static inline int dev_read_phandle(struct udevice *dev) static inline const u32 *dev_read_prop(struct udevice *dev, const char *propname, int *lenp) { - return ofnode_read_prop(dev_ofnode(dev), propname, lenp); + return ofnode_get_property(dev_ofnode(dev), propname, lenp); } static inline int dev_read_alias_seq(struct udevice *dev, int *devnump) -- cgit v1.3.1