[U-Boot] [PATCH v4 0/4] ahci mvebu driver updates

From: Ken Ma make@marvell.com
These patches move ahci mvebu driver to drivers/ata directory with bug fixing and scsi supporting.
Changes in v4: - Base on the latest mainline git version - Let AHCI_MVEBU depend on AHCI and select SCSI_AHCI ahci_mvebu driver is based on AHCI UCLASS, so let AHCI_MVEBU based on AHCI; and this driver uses ahci_init() in ahci.c, so let it select SCSI_AHCI. In this patch, DM_SCSI is not selected and it will be selected in the later patch which adds scsi support by creating a SCSI device as a child of mvebu ahci device. - Let AHCI_MVEBU select DM_SCSI This patch adds scsi support by creating a SCSI device as a child of mvebu ahci device; the functions of creating SCSI device need the kconfig option DM_SCSI, so let AHCI_MVEBU select DM_SCSI. - Remove CONFIG_AHCI_MVEBU from marvell arm64 default config files Since AHCI_MVEBU selects SCSI_AHCI and it is added into marvell arm64 default config files, so CONFIG_SCSI_AHCI is removed.
Changes in v3: - Use the new SPDX tags
Changes in v2: - Add MAINTAINERS updating
David Sniatkiwicz (1): ata: ahci_mvebu: a8040 a0: remove bad port register offsets workarounds
Ken Ma (3): ata: mvebu: move mvebu sata driver to drivers/ata directory ata: ahci_mvebu: add scsi support arm64: mvebu: defconfig: enable CONFIG_AHCI_MVEBU
MAINTAINERS | 1 + arch/arm/mach-mvebu/Makefile | 1 - configs/mvebu_db-88f3720_defconfig | 2 +- configs/mvebu_db_armada8k_defconfig | 2 +- configs/mvebu_espressobin-88f3720_defconfig | 2 +- configs/mvebu_mcbin-88f8040_defconfig | 2 +- drivers/ata/Kconfig | 11 +++++++++++ drivers/ata/Makefile | 1 + .../arm/mach-mvebu/sata.c => drivers/ata/ahci_mvebu.c | 19 +++++++++++++------ 9 files changed, 30 insertions(+), 11 deletions(-) rename arch/arm/mach-mvebu/sata.c => drivers/ata/ahci_mvebu.c (71%)

From: Ken Ma make@marvell.com
Currently mvebu sata driver is in arch/arm/mach_mvebu directory, this patch moves it to drivers/ata directory with renaming "sata.c" to "ahci_mvebu.c" which is aligned to Linux. New ahci driver's kconfig option is added as AHCI_MVEBU which selects SCSI_AHCI and is based on AHCI.
Signed-off-by: Ken Ma make@marvell.com Reviewed-by: Stefan Roese sr@denx.de Reviewed-by: Simon Glass sjg@chromium.org ---
Changes in v4: - Base on the latest mainline git version - Let AHCI_MVEBU depend on AHCI and select SCSI_AHCI ahci_mvebu driver is based on AHCI UCLASS, so let AHCI_MVEBU based on AHCI; and this driver uses ahci_init() in ahci.c, so let it select SCSI_AHCI. In this patch, DM_SCSI is not selected and it will be selected in the later patch which adds scsi support by creating a SCSI device as a child of mvebu ahci device.
Changes in v3: - Use the new SPDX tags
Changes in v2: - Add MAINTAINERS updating
MAINTAINERS | 1 + arch/arm/mach-mvebu/Makefile | 1 - drivers/ata/Kconfig | 10 ++++++++++ drivers/ata/Makefile | 1 + arch/arm/mach-mvebu/sata.c => drivers/ata/ahci_mvebu.c | 0 5 files changed, 12 insertions(+), 1 deletion(-) rename arch/arm/mach-mvebu/sata.c => drivers/ata/ahci_mvebu.c (100%)
diff --git a/MAINTAINERS b/MAINTAINERS index 5670917..cd40dbd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -135,6 +135,7 @@ S: Maintained T: git git://git.denx.de/u-boot-marvell.git F: arch/arm/mach-kirkwood/ F: arch/arm/mach-mvebu/ +F: drivers/ata/ahci_mvebu.c
ARM MARVELL PXA M: Marek Vasut marex@denx.de diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile index 3b9a811..ade7b87 100644 --- a/arch/arm/mach-mvebu/Makefile +++ b/arch/arm/mach-mvebu/Makefile @@ -7,7 +7,6 @@ ifdef CONFIG_ARM64 obj-$(CONFIG_ARMADA_3700) += armada3700/ obj-$(CONFIG_ARMADA_8K) += armada8k/ obj-y += arm64-common.o -obj-$(CONFIG_AHCI) += sata.o
else # CONFIG_ARM64
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig index 86ec628..36e1748 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig @@ -99,4 +99,14 @@ config SATA_SIL3114 help Enable this driver to support the SIL3114 SATA controllers.
+config AHCI_MVEBU + bool "Marvell EBU AHCI SATA support" + depends on ARCH_MVEBU + depends on AHCI + select SCSI_AHCI + help + This option enables support for the Marvell EBU SoC's + onboard AHCI SATA. + + If unsure, say N. endmenu diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile index 02f02c8..10bed53 100644 --- a/drivers/ata/Makefile +++ b/drivers/ata/Makefile @@ -17,3 +17,4 @@ obj-$(CONFIG_SATA_MV) += sata_mv.o obj-$(CONFIG_SATA_SIL3114) += sata_sil3114.o obj-$(CONFIG_SATA_SIL) += sata_sil.o obj-$(CONFIG_SANDBOX) += sata_sandbox.o +obj-$(CONFIG_AHCI_MVEBU) += ahci_mvebu.o diff --git a/arch/arm/mach-mvebu/sata.c b/drivers/ata/ahci_mvebu.c similarity index 100% rename from arch/arm/mach-mvebu/sata.c rename to drivers/ata/ahci_mvebu.c

From: David Sniatkiwicz davidsn@marvell.com
This workaround was added for A8040/7040 A0. A8040/7040 A0 is no longer supported so this workaround can be removed.
Signed-off-by: David Sniatkiwicz davidsn@marvell.com Signed-off-by: Ken Ma make@marvell.com Reviewed-by: Stefan Roese sr@denx.de Reviewed-by: Simon Glass sjg@chromium.org ---
Changes in v4: None Changes in v3: None Changes in v2: None
drivers/ata/ahci_mvebu.c | 8 -------- 1 file changed, 8 deletions(-)
diff --git a/drivers/ata/ahci_mvebu.c b/drivers/ata/ahci_mvebu.c index 3ae8dae..c1d215f 100644 --- a/drivers/ata/ahci_mvebu.c +++ b/drivers/ata/ahci_mvebu.c @@ -16,14 +16,6 @@ __weak int board_ahci_enable(void) return 0; }
-#ifdef CONFIG_ARMADA_8K -/* CP110 has different AHCI port addresses */ -void __iomem *ahci_port_base(void __iomem *base, u32 port) -{ - return base + 0x10000 + (port * 0x10000); -} -#endif - static int mvebu_ahci_probe(struct udevice *dev) { /*

From: Ken Ma make@marvell.com
Mvebu AHCI is AHCI driver which uses SCSI under the hood. This patch adjusts AHCI setup to support SCSI by creating a SCSI device as a child. Since the functions of creating SCSI device need the kconfig option DM_SCSI, so let AHCI_MVEBU select DM_SCSI.
Signed-off-by: Ken Ma make@marvell.com Reviewed-by: Stefan Roese sr@denx.de Reviewed-by: Simon Glass sjg@chromium.org ---
Changes in v4: - Let AHCI_MVEBU select DM_SCSI This patch adds scsi support by creating a SCSI device as a child of mvebu ahci device; the functions of creating SCSI device need the kconfig option DM_SCSI, so let AHCI_MVEBU select DM_SCSI.
Changes in v3: None Changes in v2: None
drivers/ata/Kconfig | 1 + drivers/ata/ahci_mvebu.c | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig index 36e1748..49a056e 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig @@ -104,6 +104,7 @@ config AHCI_MVEBU depends on ARCH_MVEBU depends on AHCI select SCSI_AHCI + select DM_SCSI help This option enables support for the Marvell EBU SoC's onboard AHCI SATA. diff --git a/drivers/ata/ahci_mvebu.c b/drivers/ata/ahci_mvebu.c index c1d215f..6e3f17e 100644 --- a/drivers/ata/ahci_mvebu.c +++ b/drivers/ata/ahci_mvebu.c @@ -16,6 +16,20 @@ __weak int board_ahci_enable(void) return 0; }
+static int mvebu_ahci_bind(struct udevice *dev) +{ + struct udevice *scsi_dev; + int ret; + + ret = ahci_bind_scsi(dev, &scsi_dev); + if (ret) { + debug("%s: Failed to bind (err=%d\n)", __func__, ret); + return ret; + } + + return 0; +} + static int mvebu_ahci_probe(struct udevice *dev) { /* @@ -24,7 +38,7 @@ static int mvebu_ahci_probe(struct udevice *dev) */ board_ahci_enable();
- ahci_init(devfdt_get_addr_ptr(dev)); + ahci_probe_scsi(dev, (ulong)devfdt_get_addr_ptr(dev));
return 0; } @@ -39,5 +53,6 @@ U_BOOT_DRIVER(ahci_mvebu_drv) = { .name = "ahci_mvebu", .id = UCLASS_AHCI, .of_match = mvebu_ahci_ids, + .bind = mvebu_ahci_bind, .probe = mvebu_ahci_probe, };

From: Ken Ma make@marvell.com
This patch enables the new ahci mvebu driver for marvell arm64 platform SOCs(A3k and A8k). And since AHCI_MVEBU selects SCSI_AHCI, so "CONFIG_SCSI_AHCI=y" is removed from those default config files.
Signed-off-by: Ken Ma make@marvell.com Reviewed-by: Stefan Roese sr@denx.de Reviewed-by: Simon Glass sjg@chromium.org ---
Changes in v4: - Remove CONFIG_AHCI_MVEBU from marvell arm64 default config files Since AHCI_MVEBU selects SCSI_AHCI and it is added into marvell arm64 default config files, so CONFIG_SCSI_AHCI is removed.
Changes in v3: None Changes in v2: None
configs/mvebu_db-88f3720_defconfig | 2 +- configs/mvebu_db_armada8k_defconfig | 2 +- configs/mvebu_espressobin-88f3720_defconfig | 2 +- configs/mvebu_mcbin-88f8040_defconfig | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/configs/mvebu_db-88f3720_defconfig b/configs/mvebu_db-88f3720_defconfig index e6f7cb9..4ba287f 100644 --- a/configs/mvebu_db-88f3720_defconfig +++ b/configs/mvebu_db-88f3720_defconfig @@ -30,7 +30,7 @@ CONFIG_CMD_MVEBU_BUBT=y CONFIG_CMD_EXT4_WRITE=y CONFIG_MAC_PARTITION=y CONFIG_ENV_IS_IN_SPI_FLASH=y -CONFIG_SCSI_AHCI=y +CONFIG_AHCI_MVEBU=y CONFIG_BLOCK_CACHE=y CONFIG_DM_GPIO=y # CONFIG_MVEBU_GPIO is not set diff --git a/configs/mvebu_db_armada8k_defconfig b/configs/mvebu_db_armada8k_defconfig index 63f2103..b7694ec 100644 --- a/configs/mvebu_db_armada8k_defconfig +++ b/configs/mvebu_db_armada8k_defconfig @@ -30,7 +30,7 @@ CONFIG_CMD_MVEBU_BUBT=y CONFIG_CMD_EXT4_WRITE=y CONFIG_MAC_PARTITION=y CONFIG_ENV_IS_IN_SPI_FLASH=y -CONFIG_SCSI_AHCI=y +CONFIG_AHCI_MVEBU=y CONFIG_BLOCK_CACHE=y CONFIG_DM_I2C=y CONFIG_SYS_I2C_MVTWSI=y diff --git a/configs/mvebu_espressobin-88f3720_defconfig b/configs/mvebu_espressobin-88f3720_defconfig index 5a6d1e6..db11e51 100644 --- a/configs/mvebu_espressobin-88f3720_defconfig +++ b/configs/mvebu_espressobin-88f3720_defconfig @@ -30,7 +30,7 @@ CONFIG_CMD_MVEBU_BUBT=y CONFIG_CMD_EXT4_WRITE=y CONFIG_MAC_PARTITION=y CONFIG_ENV_IS_IN_SPI_FLASH=y -CONFIG_SCSI_AHCI=y +CONFIG_AHCI_MVEBU=y CONFIG_BLOCK_CACHE=y CONFIG_DM_GPIO=y CONFIG_DM_I2C=y diff --git a/configs/mvebu_mcbin-88f8040_defconfig b/configs/mvebu_mcbin-88f8040_defconfig index de682d1..545bb4f 100644 --- a/configs/mvebu_mcbin-88f8040_defconfig +++ b/configs/mvebu_mcbin-88f8040_defconfig @@ -32,7 +32,7 @@ CONFIG_CMD_REGULATOR=y CONFIG_CMD_EXT4_WRITE=y CONFIG_MAC_PARTITION=y CONFIG_ENV_IS_IN_SPI_FLASH=y -CONFIG_SCSI_AHCI=y +CONFIG_AHCI_MVEBU=y CONFIG_BLOCK_CACHE=y CONFIG_DM_GPIO=y CONFIG_DM_I2C=y

On 25.05.2018 09:49, make@marvell.com wrote:
From: Ken Ma make@marvell.com
These patches move ahci mvebu driver to drivers/ata directory with bug fixing and scsi supporting.
Changes in v4:
- Base on the latest mainline git version
- Let AHCI_MVEBU depend on AHCI and select SCSI_AHCI
ahci_mvebu driver is based on AHCI UCLASS, so let AHCI_MVEBU based on AHCI; and this driver uses ahci_init() in ahci.c, so let it select SCSI_AHCI. In this patch, DM_SCSI is not selected and it will be selected in the later patch which adds scsi support by creating a SCSI device as a child of mvebu ahci device.
- Let AHCI_MVEBU select DM_SCSI
This patch adds scsi support by creating a SCSI device as a child of mvebu ahci device; the functions of creating SCSI device need the kconfig option DM_SCSI, so let AHCI_MVEBU select DM_SCSI.
- Remove CONFIG_AHCI_MVEBU from marvell arm64 default config files
Since AHCI_MVEBU selects SCSI_AHCI and it is added into marvell arm64 default config files, so CONFIG_SCSI_AHCI is removed.
Changes in v3:
- Use the new SPDX tags
Changes in v2:
- Add MAINTAINERS updating
David Sniatkiwicz (1): ata: ahci_mvebu: a8040 a0: remove bad port register offsets workarounds
Ken Ma (3): ata: mvebu: move mvebu sata driver to drivers/ata directory ata: ahci_mvebu: add scsi support arm64: mvebu: defconfig: enable CONFIG_AHCI_MVEBU
MAINTAINERS | 1 + arch/arm/mach-mvebu/Makefile | 1 - configs/mvebu_db-88f3720_defconfig | 2 +- configs/mvebu_db_armada8k_defconfig | 2 +- configs/mvebu_espressobin-88f3720_defconfig | 2 +- configs/mvebu_mcbin-88f8040_defconfig | 2 +- drivers/ata/Kconfig | 11 +++++++++++ drivers/ata/Makefile | 1 + .../arm/mach-mvebu/sata.c => drivers/ata/ahci_mvebu.c | 19 +++++++++++++------ 9 files changed, 30 insertions(+), 11 deletions(-) rename arch/arm/mach-mvebu/sata.c => drivers/ata/ahci_mvebu.c (71%)
Series applied to u-boot-marvell/master
Thanks, Stefan
participants (2)
-
make@marvell.com
-
Stefan Roese