All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/7] OMAP: Move SATA to use block driver model
@ 2017-03-24 12:24 Jean-Jacques Hiblot
  2017-03-24 12:24 ` [U-Boot] [PATCH 1/7] arm: omap: sata: move enable sata clocks to enable_basic_clocks() Jean-Jacques Hiblot
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: Jean-Jacques Hiblot @ 2017-03-24 12:24 UTC (permalink / raw)
  To: u-boot

This series adds support for SATA using the driver model on omap platforms.
It is based on the work of Mugunthan V N <mugunthanvnm@ti.com> in Feb 2016

The first 3 patches are preparatory work.
The 4th patch adds the actual driver.
The 5th and 6th patches are fixes related to the scsi_scan logic when DM is
used.
The last patch enables the DM sata by default for the dra7 platforms.

This series depends on the series "mmc: omap_hsmmc: add support for CONFIG_BLK"
posted a few days ago to add support for CONFIG_BLK in the omap_hsmmc driver.

Tested on DRA72 evm. buildman has been run on am33, dra7, am43, omap5 and am57

Jean-Jacques Hiblot (3):
  dm: scsi: ahci: fill max_lun and max_id members of scsi_platdata
  dm: scsi: fix scan
  defconfig: dra7xx_evm: enable CONFIG_BLK and disk driver model for
    SCSI

Mugunthan V N (4):
  arm: omap: sata: move enable sata clocks to enable_basic_clocks()
  arm: omap: sata: compile out sata init apis when CONFIG_DM_SCSI is
    defined
  arm: omap-common: sata: prepare driver for DM conversion
  drivers: block: dwc_ahci: Implement a driver for Synopsys DWC sata
    device

 arch/arm/mach-omap2/omap5/hw_data.c | 12 ++++++
 arch/arm/mach-omap2/sata.c          | 38 ++++++------------
 common/scsi.c                       | 35 +++++++++++++---
 configs/dra7xx_evm_defconfig        |  4 ++
 configs/dra7xx_hs_evm_defconfig     |  4 ++
 drivers/block/Kconfig               |  9 +++++
 drivers/block/Makefile              |  1 +
 drivers/block/ahci.c                | 12 +++++-
 drivers/block/dwc_ahci.c            | 79 +++++++++++++++++++++++++++++++++++++
 include/sata.h                      |  2 +
 10 files changed, 162 insertions(+), 34 deletions(-)
 create mode 100644 drivers/block/dwc_ahci.c

-- 
1.9.1

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

* [U-Boot] [PATCH 1/7] arm: omap: sata: move enable sata clocks to enable_basic_clocks()
  2017-03-24 12:24 [U-Boot] [PATCH 0/7] OMAP: Move SATA to use block driver model Jean-Jacques Hiblot
@ 2017-03-24 12:24 ` Jean-Jacques Hiblot
  2017-04-05 17:43   ` Tom Rini
  2017-03-24 12:24 ` [U-Boot] [PATCH 2/7] arm: omap: sata: compile out sata init apis when CONFIG_DM_SCSI is defined Jean-Jacques Hiblot
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Jean-Jacques Hiblot @ 2017-03-24 12:24 UTC (permalink / raw)
  To: u-boot

From: Mugunthan V N <mugunthanvnm@ti.com>

All the clocks which has to be enabled has to be done in
enable_basic_clocks(), so moving enable sata clock to common
clocks enable function.

Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---
 arch/arm/mach-omap2/omap5/hw_data.c | 12 ++++++++++++
 arch/arm/mach-omap2/sata.c          | 23 -----------------------
 2 files changed, 12 insertions(+), 23 deletions(-)

diff --git a/arch/arm/mach-omap2/omap5/hw_data.c b/arch/arm/mach-omap2/omap5/hw_data.c
index 5d956b5..a8a6b8a 100644
--- a/arch/arm/mach-omap2/omap5/hw_data.c
+++ b/arch/arm/mach-omap2/omap5/hw_data.c
@@ -361,6 +361,9 @@ void enable_basic_clocks(void)
 		(*prcm)->cm_l4per_gpio6_clkctrl,
 		(*prcm)->cm_l4per_gpio7_clkctrl,
 		(*prcm)->cm_l4per_gpio8_clkctrl,
+#ifdef CONFIG_SCSI_AHCI_PLAT
+		(*prcm)->cm_l3init_ocp2scp3_clkctrl,
+#endif
 		0
 	};
 
@@ -379,6 +382,9 @@ void enable_basic_clocks(void)
 #ifdef CONFIG_TI_QSPI
 		(*prcm)->cm_l4per_qspi_clkctrl,
 #endif
+#ifdef CONFIG_SCSI_AHCI_PLAT
+		(*prcm)->cm_l3init_sata_clkctrl,
+#endif
 		0
 	};
 
@@ -411,6 +417,12 @@ void enable_basic_clocks(void)
 	setbits_le32((*prcm)->cm_l4per_qspi_clkctrl, (1<<24));
 #endif
 
+#ifdef CONFIG_SCSI_AHCI_PLAT
+	/* Enable optional functional clock for SATA */
+	setbits_le32((*prcm)->cm_l3init_sata_clkctrl,
+		     SATA_CLKCTRL_OPTFCLKEN_MASK);
+#endif
+
 	/* Enable SCRM OPT clocks for PER and CORE dpll */
 	setbits_le32((*prcm)->cm_wkupaon_scrm_clkctrl,
 			OPTFCLKEN_SCRM_PER_MASK);
diff --git a/arch/arm/mach-omap2/sata.c b/arch/arm/mach-omap2/sata.c
index 2c2d1bc..0c82689 100644
--- a/arch/arm/mach-omap2/sata.c
+++ b/arch/arm/mach-omap2/sata.c
@@ -37,29 +37,6 @@ int init_sata(int dev)
 	int ret;
 	u32 val;
 
-	u32 const clk_domains_sata[] = {
-		0
-	};
-
-	u32 const clk_modules_hw_auto_sata[] = {
-		(*prcm)->cm_l3init_ocp2scp3_clkctrl,
-		0
-	};
-
-	u32 const clk_modules_explicit_en_sata[] = {
-		(*prcm)->cm_l3init_sata_clkctrl,
-		0
-	};
-
-	do_enable_clocks(clk_domains_sata,
-			 clk_modules_hw_auto_sata,
-			 clk_modules_explicit_en_sata,
-			 0);
-
-	/* Enable optional functional clock for SATA */
-	setbits_le32((*prcm)->cm_l3init_sata_clkctrl,
-		     SATA_CLKCTRL_OPTFCLKEN_MASK);
-
 	sata_phy.power_reg = (void __iomem *)(*ctrl)->control_phy_power_sata;
 
 	/* Power up the PHY */
-- 
1.9.1

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

* [U-Boot] [PATCH 2/7] arm: omap: sata: compile out sata init apis when CONFIG_DM_SCSI is defined
  2017-03-24 12:24 [U-Boot] [PATCH 0/7] OMAP: Move SATA to use block driver model Jean-Jacques Hiblot
  2017-03-24 12:24 ` [U-Boot] [PATCH 1/7] arm: omap: sata: move enable sata clocks to enable_basic_clocks() Jean-Jacques Hiblot
@ 2017-03-24 12:24 ` Jean-Jacques Hiblot
  2017-04-05 17:43   ` Tom Rini
  2017-03-24 12:24 ` [U-Boot] [PATCH 3/7] arm: omap-common: sata: prepare driver for DM conversion Jean-Jacques Hiblot
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Jean-Jacques Hiblot @ 2017-03-24 12:24 UTC (permalink / raw)
  To: u-boot

From: Mugunthan V N <mugunthanvnm@ti.com>

Compile out sata init/reset apis as this will be implemented in
scsi-uclass driver to initialize sata devices.

Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---
 arch/arm/mach-omap2/sata.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/mach-omap2/sata.c b/arch/arm/mach-omap2/sata.c
index 0c82689..217f1c9 100644
--- a/arch/arm/mach-omap2/sata.c
+++ b/arch/arm/mach-omap2/sata.c
@@ -32,6 +32,7 @@ struct omap_pipe3 sata_phy = {
 	.dpll_map = dpll_map_sata,
 };
 
+#ifndef CONFIG_DM_SCSI
 int init_sata(int dev)
 {
 	int ret;
@@ -68,3 +69,4 @@ void scsi_bus_reset(void)
 	ahci_reset((void __iomem *)DWC_AHSATA_BASE);
 	ahci_init((void __iomem *)DWC_AHSATA_BASE);
 }
+#endif
-- 
1.9.1

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

* [U-Boot] [PATCH 3/7] arm: omap-common: sata: prepare driver for DM conversion
  2017-03-24 12:24 [U-Boot] [PATCH 0/7] OMAP: Move SATA to use block driver model Jean-Jacques Hiblot
  2017-03-24 12:24 ` [U-Boot] [PATCH 1/7] arm: omap: sata: move enable sata clocks to enable_basic_clocks() Jean-Jacques Hiblot
  2017-03-24 12:24 ` [U-Boot] [PATCH 2/7] arm: omap: sata: compile out sata init apis when CONFIG_DM_SCSI is defined Jean-Jacques Hiblot
@ 2017-03-24 12:24 ` Jean-Jacques Hiblot
  2017-04-01  4:21   ` Simon Glass
  2017-03-24 12:24 ` [U-Boot] [PATCH 4/7] drivers: block: dwc_ahci: Implement a driver for Synopsys DWC sata device Jean-Jacques Hiblot
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Jean-Jacques Hiblot @ 2017-03-24 12:24 UTC (permalink / raw)
  To: u-boot

From: Mugunthan V N <mugunthanvnm@ti.com>

Prepare sata driver for DM conversion by abstracting sata phy
init to seperate function.

Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---
 arch/arm/mach-omap2/sata.c | 13 +++++++++----
 include/sata.h             |  2 ++
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-omap2/sata.c b/arch/arm/mach-omap2/sata.c
index 217f1c9..dce432b 100644
--- a/arch/arm/mach-omap2/sata.c
+++ b/arch/arm/mach-omap2/sata.c
@@ -32,16 +32,21 @@ struct omap_pipe3 sata_phy = {
 	.dpll_map = dpll_map_sata,
 };
 
+int enable_sata_phy(void)
+{
+	sata_phy.power_reg = (void __iomem *)(*ctrl)->control_phy_power_sata;
+
+	/* Power up the PHY */
+	return phy_pipe3_power_on(&sata_phy);
+}
+
 #ifndef CONFIG_DM_SCSI
 int init_sata(int dev)
 {
 	int ret;
 	u32 val;
 
-	sata_phy.power_reg = (void __iomem *)(*ctrl)->control_phy_power_sata;
-
-	/* Power up the PHY */
-	phy_pipe3_power_on(&sata_phy);
+	enable_sata_phy();
 
 	/* Enable SATA module, No Idle, No Standby */
 	val = TI_SATA_IDLE_NO | TI_SATA_STANDBY_NO;
diff --git a/include/sata.h b/include/sata.h
index d18cc9a..583b72d 100644
--- a/include/sata.h
+++ b/include/sata.h
@@ -18,4 +18,6 @@ int sata_port_status(int dev, int port);
 extern struct blk_desc sata_dev_desc[];
 #endif
 
+int enable_sata_phy(void);
+
 #endif
-- 
1.9.1

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

* [U-Boot] [PATCH 4/7] drivers: block: dwc_ahci: Implement a driver for Synopsys DWC sata device
  2017-03-24 12:24 [U-Boot] [PATCH 0/7] OMAP: Move SATA to use block driver model Jean-Jacques Hiblot
                   ` (2 preceding siblings ...)
  2017-03-24 12:24 ` [U-Boot] [PATCH 3/7] arm: omap-common: sata: prepare driver for DM conversion Jean-Jacques Hiblot
@ 2017-03-24 12:24 ` Jean-Jacques Hiblot
  2017-03-24 12:24 ` [U-Boot] [PATCH 5/7] dm: scsi: ahci: fill max_lun and max_id members of scsi_platdata Jean-Jacques Hiblot
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Jean-Jacques Hiblot @ 2017-03-24 12:24 UTC (permalink / raw)
  To: u-boot

From: Mugunthan V N <mugunthanvnm@ti.com>

Implement a sata driver for Synopsys DWC sata device based on
U-boot driver model.

Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---
 drivers/block/Kconfig    |  9 ++++++
 drivers/block/Makefile   |  1 +
 drivers/block/dwc_ahci.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 89 insertions(+)
 create mode 100644 drivers/block/dwc_ahci.c

diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index 88e66e2..0aecb6b 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -48,4 +48,13 @@ config SATA_CEVA
 	  ZynqMP. Support up to 2 external devices. Complient with SATA 3.1 and
 	  AHCI 1.3 specifications with hot-plug detect feature.
 
+
+config DWC_AHCI
+	bool "Enable Synopsys DWC AHCI driver support"
+	select SCSI_AHCI
+	depends on DM_SCSI
+	help
+	  Enable this driver to support Sata devices through
+	  Synopsys DWC AHCI module.
+
 endmenu
diff --git a/drivers/block/Makefile b/drivers/block/Makefile
index a72feec..cffe498 100644
--- a/drivers/block/Makefile
+++ b/drivers/block/Makefile
@@ -11,6 +11,7 @@ ifndef CONFIG_BLK
 obj-y += blk_legacy.o
 endif
 
+obj-$(CONFIG_DWC_AHCI) += dwc_ahci.o
 obj-$(CONFIG_AHCI) += ahci-uclass.o
 obj-$(CONFIG_DM_SCSI) += scsi-uclass.o
 obj-$(CONFIG_SCSI_AHCI) += ahci.o
diff --git a/drivers/block/dwc_ahci.c b/drivers/block/dwc_ahci.c
new file mode 100644
index 0000000..939e57d
--- /dev/null
+++ b/drivers/block/dwc_ahci.c
@@ -0,0 +1,79 @@
+/*
+ * DWC SATA platform driver
+ *
+ * (C) Copyright 2016
+ *     Texas Instruments Incorporated, <www.ti.com>
+ *
+ * Author: Mugunthan V N <mugunthanvnm@ti.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <ahci.h>
+#include <scsi.h>
+#include <sata.h>
+#include <asm/arch/sata.h>
+#include <asm/io.h>
+
+struct dwc_ahci_priv {
+	void *base;
+	void *wrapper_base;
+};
+
+static int dwc_ahci_ofdata_to_platdata(struct udevice *dev)
+{
+	struct dwc_ahci_priv *priv = dev_get_priv(dev);
+	fdt_addr_t addr;
+
+	priv->base = map_physmem(dev_get_addr(dev), sizeof(void *),
+				 MAP_NOCACHE);
+
+	addr = dev_get_addr_index(dev, 1);
+	if (addr != FDT_ADDR_T_NONE) {
+		priv->wrapper_base = map_physmem(addr, sizeof(void *),
+						 MAP_NOCACHE);
+	} else {
+		priv->wrapper_base = NULL;
+	}
+
+	return 0;
+}
+
+static int dwc_ahci_probe(struct udevice *dev)
+{
+	struct dwc_ahci_priv *priv = dev_get_priv(dev);
+	int ret;
+
+	if (priv->wrapper_base) {
+		u32 val = TI_SATA_IDLE_NO | TI_SATA_STANDBY_NO;
+
+		/* Enable SATA module, No Idle, No Standby */
+		writel(val, priv->wrapper_base + TI_SATA_SYSCONFIG);
+	}
+
+	ret = enable_sata_phy();
+	if (ret) {
+		error("Sata phy enable failed\n");
+		return ret;
+	}
+
+	return ahci_init(priv->base);
+}
+
+static const struct udevice_id dwc_ahci_ids[] = {
+	{ .compatible = "snps,dwc-ahci" },
+	{ }
+};
+
+U_BOOT_DRIVER(dwc_ahci) = {
+	.name	= "dwc_ahci",
+	.id	= UCLASS_SCSI,
+	.of_match = dwc_ahci_ids,
+	.ofdata_to_platdata = dwc_ahci_ofdata_to_platdata,
+	.probe	= dwc_ahci_probe,
+	.priv_auto_alloc_size = sizeof(struct dwc_ahci_priv),
+	.platdata_auto_alloc_size = sizeof(struct scsi_platdata),
+	.flags = DM_FLAG_ALLOC_PRIV_DMA,
+};
-- 
1.9.1

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

* [U-Boot] [PATCH 5/7] dm: scsi: ahci: fill max_lun and max_id members of scsi_platdata
  2017-03-24 12:24 [U-Boot] [PATCH 0/7] OMAP: Move SATA to use block driver model Jean-Jacques Hiblot
                   ` (3 preceding siblings ...)
  2017-03-24 12:24 ` [U-Boot] [PATCH 4/7] drivers: block: dwc_ahci: Implement a driver for Synopsys DWC sata device Jean-Jacques Hiblot
@ 2017-03-24 12:24 ` Jean-Jacques Hiblot
  2017-04-01  4:21   ` Simon Glass
  2017-03-24 12:24 ` [U-Boot] [PATCH 6/7] dm: scsi: fix scan Jean-Jacques Hiblot
  2017-03-24 12:24 ` [U-Boot] [PATCH 7/7] defconfig: dra7xx_evm: enable CONFIG_BLK and disk driver model for SCSI Jean-Jacques Hiblot
  6 siblings, 1 reply; 16+ messages in thread
From: Jean-Jacques Hiblot @ 2017-03-24 12:24 UTC (permalink / raw)
  To: u-boot

Those 2 values are required for proper operation of the DM_SCSI version of
scsi_scan().

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---
 drivers/block/ahci.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/block/ahci.c b/drivers/block/ahci.c
index 3fa14a7..3c5359f 100644
--- a/drivers/block/ahci.c
+++ b/drivers/block/ahci.c
@@ -971,7 +971,9 @@ void scsi_low_level_init(int busdevfunc)
 {
 	int i;
 	u32 linkmap;
-
+#ifdef CONFIG_DM_SCSI
+	struct scsi_platdata *plat = dev_get_platdata(dev);
+#endif
 #ifndef CONFIG_SCSI_AHCI_PLAT
 # if defined(CONFIG_DM_PCI)
 	struct udevice *dev;
@@ -990,6 +992,13 @@ void scsi_low_level_init(int busdevfunc)
 
 	linkmap = probe_ent->link_port_map;
 
+#ifdef CONFIG_DM_SCSI
+	if (plat) {
+		plat->max_lun = 1;
+		plat->max_id = ffs(linkmap);
+	}
+#endif
+
 	for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
 		if (((linkmap >> i) & 0x01)) {
 			if (ahci_port_start((u8) i)) {
@@ -1047,6 +1056,7 @@ err_out:
 
 void __weak scsi_init(void)
 {
+	printf("AHCI\n");
 }
 
 #endif
-- 
1.9.1

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

* [U-Boot] [PATCH 6/7] dm: scsi: fix scan
  2017-03-24 12:24 [U-Boot] [PATCH 0/7] OMAP: Move SATA to use block driver model Jean-Jacques Hiblot
                   ` (4 preceding siblings ...)
  2017-03-24 12:24 ` [U-Boot] [PATCH 5/7] dm: scsi: ahci: fill max_lun and max_id members of scsi_platdata Jean-Jacques Hiblot
@ 2017-03-24 12:24 ` Jean-Jacques Hiblot
  2017-04-01  4:22   ` Simon Glass
  2017-03-24 12:24 ` [U-Boot] [PATCH 7/7] defconfig: dra7xx_evm: enable CONFIG_BLK and disk driver model for SCSI Jean-Jacques Hiblot
  6 siblings, 1 reply; 16+ messages in thread
From: Jean-Jacques Hiblot @ 2017-03-24 12:24 UTC (permalink / raw)
  To: u-boot

With DM_SCSI enabled, scsi scan suffers 2 problems:
* blk_create_devicef is called with blkz = 0, leading to a divide-by-0
  exception
* new blk devices are created at each scan.

To fix this we start by removing all known SCSI devices at the beginning
of the scan. Then a detection process is started for each possible
device only to get the blksz and lba of the device (no call to part_init() yet).
If a device is found, we can call blk_create_devicef() with the right
parameters and continue the process.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---
 common/scsi.c | 35 +++++++++++++++++++++++++++++------
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/common/scsi.c b/common/scsi.c
index fb5b407..3385cc2 100644
--- a/common/scsi.c
+++ b/common/scsi.c
@@ -480,7 +480,7 @@ 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, struct blk_desc *dev_desc)
+static int scsi_detect_dev(int target, struct blk_desc *dev_desc, int init_part)
 {
 	unsigned char perq, modi;
 	lbaint_t capacity;
@@ -539,7 +539,8 @@ static int scsi_detect_dev(int target, struct blk_desc *dev_desc)
 	dev_desc->blksz = blksz;
 	dev_desc->log2blksz = LOG2(dev_desc->blksz);
 	dev_desc->type = perq;
-	part_init(&dev_desc[0]);
+	if (init_part)
+		part_init(&dev_desc[0]);
 removable:
 	return 0;
 }
@@ -565,6 +566,9 @@ int scsi_scan(int mode)
 	if (ret)
 		return ret;
 
+	/* remove all SCSI interfaces since we're going to (re)create them */
+	blk_unbind_all(IF_TYPE_SCSI);
+
 	uclass_foreach_dev(dev, uc) {
 		struct scsi_platdata *plat; /* scsi controller platdata */
 
@@ -580,9 +584,20 @@ int scsi_scan(int mode)
 			for (lun = 0; lun < plat->max_lun; lun++) {
 				struct udevice *bdev; /* block device */
 				/* block device description */
+				struct blk_desc _bd;
 				struct blk_desc *bdesc;
 				char str[10];
 
+				scsi_init_dev_desc_priv(&_bd);
+				_bd.lun = lun;
+				ret = scsi_detect_dev(i, &_bd, 0);
+				if (ret)
+					/*
+					 * no device detected?
+					 * check the next lun.
+					 */
+					continue;
+
 				/*
 				 * Create only one block device and do detection
 				 * to make sure that there won't be a lot of
@@ -590,17 +605,25 @@ int scsi_scan(int mode)
 				 */
 				snprintf(str, sizeof(str), "id%dlun%d", i, lun);
 				ret = blk_create_devicef(dev, "scsi_blk",
-							  str, IF_TYPE_SCSI,
-							  -1, 0, 0, &bdev);
+						str, IF_TYPE_SCSI,
+						-1,
+						_bd.blksz,
+						_bd.blksz * _bd.lba,
+						&bdev);
 				if (ret) {
 					debug("Can't create device\n");
 					return ret;
 				}
 				bdesc = dev_get_uclass_platdata(bdev);
 
+				/*
+				 * perform the detection once more but this
+				 * time, let's initialize do the initialization
+				 * of the partitions
+				 */
 				scsi_init_dev_desc_priv(bdesc);
 				bdesc->lun = lun;
-				ret = scsi_detect_dev(i, bdesc);
+				ret = scsi_detect_dev(i, bdesc, 1);
 				if (ret) {
 					device_unbind(bdev);
 					continue;
@@ -631,7 +654,7 @@ int scsi_scan(int mode)
 	for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
 		for (lun = 0; lun < CONFIG_SYS_SCSI_MAX_LUN; lun++) {
 			scsi_dev_desc[scsi_max_devs].lun = lun;
-			ret = scsi_detect_dev(i, &scsi_dev_desc[scsi_max_devs]);
+			ret = scsi_detect_dev(i, &scsi_dev_desc[scsi_max_devs], 1);
 			if (ret)
 				continue;
 
-- 
1.9.1

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

* [U-Boot] [PATCH 7/7] defconfig: dra7xx_evm: enable CONFIG_BLK and disk driver model for SCSI
  2017-03-24 12:24 [U-Boot] [PATCH 0/7] OMAP: Move SATA to use block driver model Jean-Jacques Hiblot
                   ` (5 preceding siblings ...)
  2017-03-24 12:24 ` [U-Boot] [PATCH 6/7] dm: scsi: fix scan Jean-Jacques Hiblot
@ 2017-03-24 12:24 ` Jean-Jacques Hiblot
  2017-04-01  4:22   ` Simon Glass
  6 siblings, 1 reply; 16+ messages in thread
From: Jean-Jacques Hiblot @ 2017-03-24 12:24 UTC (permalink / raw)
  To: u-boot

Enable disk driver model for dra7xx_evm as dwc_ahci supports
driver model. As a consequence we must also enable CONFIG_BLK and
CONFIG_DM_USB.

Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---
 configs/dra7xx_evm_defconfig    | 4 ++++
 configs/dra7xx_hs_evm_defconfig | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/configs/dra7xx_evm_defconfig b/configs/dra7xx_evm_defconfig
index 42f87b3..1d45622 100644
--- a/configs/dra7xx_evm_defconfig
+++ b/configs/dra7xx_evm_defconfig
@@ -89,6 +89,7 @@ CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
 CONFIG_USB=y
+CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_DWC3=y
@@ -101,3 +102,6 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
+CONFIG_BLK=y
+CONFIG_DM_SCSI=y
+CONFIG_DWC_AHCI=y
diff --git a/configs/dra7xx_hs_evm_defconfig b/configs/dra7xx_hs_evm_defconfig
index f3a9c68..e31ad28 100644
--- a/configs/dra7xx_hs_evm_defconfig
+++ b/configs/dra7xx_hs_evm_defconfig
@@ -93,6 +93,7 @@ CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
 CONFIG_OMAP_TIMER=y
 CONFIG_USB=y
+CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_DWC3=y
@@ -105,3 +106,6 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
+CONFIG_BLK=y
+CONFIG_DM_SCSI=y
+CONFIG_DWC_AHCI=y
-- 
1.9.1

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

* [U-Boot] [PATCH 3/7] arm: omap-common: sata: prepare driver for DM conversion
  2017-03-24 12:24 ` [U-Boot] [PATCH 3/7] arm: omap-common: sata: prepare driver for DM conversion Jean-Jacques Hiblot
@ 2017-04-01  4:21   ` Simon Glass
  2017-04-04 10:34     ` Jean-Jacques Hiblot
  0 siblings, 1 reply; 16+ messages in thread
From: Simon Glass @ 2017-04-01  4:21 UTC (permalink / raw)
  To: u-boot

Hi,

On 24 March 2017 at 06:24, Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
> From: Mugunthan V N <mugunthanvnm@ti.com>
>
> Prepare sata driver for DM conversion by abstracting sata phy
> init to seperate function.
>
> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
> ---
>  arch/arm/mach-omap2/sata.c | 13 +++++++++----
>  include/sata.h             |  2 ++
>  2 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/sata.c b/arch/arm/mach-omap2/sata.c
> index 217f1c9..dce432b 100644
> --- a/arch/arm/mach-omap2/sata.c
> +++ b/arch/arm/mach-omap2/sata.c
> @@ -32,16 +32,21 @@ struct omap_pipe3 sata_phy = {
>         .dpll_map = dpll_map_sata,
>  };
>
> +int enable_sata_phy(void)

We should not be calling board functions from the driver. Can you
instead add a SATA PHY uclass / driver?

> +{
> +       sata_phy.power_reg = (void __iomem *)(*ctrl)->control_phy_power_sata;
> +
> +       /* Power up the PHY */
> +       return phy_pipe3_power_on(&sata_phy);
> +}
> +
>  #ifndef CONFIG_DM_SCSI
>  int init_sata(int dev)
>  {
>         int ret;
>         u32 val;
>
> -       sata_phy.power_reg = (void __iomem *)(*ctrl)->control_phy_power_sata;
> -
> -       /* Power up the PHY */
> -       phy_pipe3_power_on(&sata_phy);
> +       enable_sata_phy();
>
>         /* Enable SATA module, No Idle, No Standby */
>         val = TI_SATA_IDLE_NO | TI_SATA_STANDBY_NO;
> diff --git a/include/sata.h b/include/sata.h
> index d18cc9a..583b72d 100644
> --- a/include/sata.h
> +++ b/include/sata.h
> @@ -18,4 +18,6 @@ int sata_port_status(int dev, int port);
>  extern struct blk_desc sata_dev_desc[];
>  #endif
>
> +int enable_sata_phy(void);
> +
>  #endif
> --
> 1.9.1
>


Regards,
Simon

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

* [U-Boot] [PATCH 5/7] dm: scsi: ahci: fill max_lun and max_id members of scsi_platdata
  2017-03-24 12:24 ` [U-Boot] [PATCH 5/7] dm: scsi: ahci: fill max_lun and max_id members of scsi_platdata Jean-Jacques Hiblot
@ 2017-04-01  4:21   ` Simon Glass
  0 siblings, 0 replies; 16+ messages in thread
From: Simon Glass @ 2017-04-01  4:21 UTC (permalink / raw)
  To: u-boot

Hi,

On 24 March 2017 at 06:24, Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
> Those 2 values are required for proper operation of the DM_SCSI version of
> scsi_scan().
>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
> ---
>  drivers/block/ahci.c | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/block/ahci.c b/drivers/block/ahci.c
> index 3fa14a7..3c5359f 100644
> --- a/drivers/block/ahci.c
> +++ b/drivers/block/ahci.c
> @@ -971,7 +971,9 @@ void scsi_low_level_init(int busdevfunc)
>  {
>         int i;
>         u32 linkmap;
> -
> +#ifdef CONFIG_DM_SCSI
> +       struct scsi_platdata *plat = dev_get_platdata(dev);
> +#endif
>  #ifndef CONFIG_SCSI_AHCI_PLAT
>  # if defined(CONFIG_DM_PCI)
>         struct udevice *dev;
> @@ -990,6 +992,13 @@ void scsi_low_level_init(int busdevfunc)
>
>         linkmap = probe_ent->link_port_map;
>
> +#ifdef CONFIG_DM_SCSI

We should not be touching or using scsi_low_level_init() with DM.
There is a patch I just reviewed which seems to do a similar thing:

scsi: move base, max_lun and max_id to uclass plat data

> +       if (plat) {
> +               plat->max_lun = 1;
> +               plat->max_id = ffs(linkmap);
> +       }
> +#endif
> +
>         for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
>                 if (((linkmap >> i) & 0x01)) {
>                         if (ahci_port_start((u8) i)) {
> @@ -1047,6 +1056,7 @@ err_out:
>
>  void __weak scsi_init(void)
>  {
> +       printf("AHCI\n");
>  }
>
>  #endif
> --
> 1.9.1
>

Regards,
Simon

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

* [U-Boot] [PATCH 6/7] dm: scsi: fix scan
  2017-03-24 12:24 ` [U-Boot] [PATCH 6/7] dm: scsi: fix scan Jean-Jacques Hiblot
@ 2017-04-01  4:22   ` Simon Glass
  2017-04-04 10:43     ` Jean-Jacques Hiblot
  0 siblings, 1 reply; 16+ messages in thread
From: Simon Glass @ 2017-04-01  4:22 UTC (permalink / raw)
  To: u-boot

Hi Jean-Jacques,

On 24 March 2017 at 06:24, Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
> With DM_SCSI enabled, scsi scan suffers 2 problems:
> * blk_create_devicef is called with blkz = 0, leading to a divide-by-0
>   exception
> * new blk devices are created at each scan.
>
> To fix this we start by removing all known SCSI devices at the beginning
> of the scan. Then a detection process is started for each possible
> device only to get the blksz and lba of the device (no call to part_init() yet).
> If a device is found, we can call blk_create_devicef() with the right
> parameters and continue the process.
>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
> ---
>  common/scsi.c | 35 +++++++++++++++++++++++++++++------
>  1 file changed, 29 insertions(+), 6 deletions(-)
>
> diff --git a/common/scsi.c b/common/scsi.c
> index fb5b407..3385cc2 100644
> --- a/common/scsi.c
> +++ b/common/scsi.c
> @@ -480,7 +480,7 @@ 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, struct blk_desc *dev_desc)
> +static int scsi_detect_dev(int target, struct blk_desc *dev_desc, int init_part)
>  {
>         unsigned char perq, modi;
>         lbaint_t capacity;
> @@ -539,7 +539,8 @@ static int scsi_detect_dev(int target, struct blk_desc *dev_desc)
>         dev_desc->blksz = blksz;
>         dev_desc->log2blksz = LOG2(dev_desc->blksz);
>         dev_desc->type = perq;
> -       part_init(&dev_desc[0]);
> +       if (init_part)
> +               part_init(&dev_desc[0]);

Do you need this in here? The caller could just do it and avoid the
extra parameter.

>  removable:
>         return 0;
>  }
> @@ -565,6 +566,9 @@ int scsi_scan(int mode)
>         if (ret)
>                 return ret;
>
> +       /* remove all SCSI interfaces since we're going to (re)create them */
> +       blk_unbind_all(IF_TYPE_SCSI);
> +

This seems to already be done a few lines up...is it needed?

>         uclass_foreach_dev(dev, uc) {
>                 struct scsi_platdata *plat; /* scsi controller platdata */
>
> @@ -580,9 +584,20 @@ int scsi_scan(int mode)
>                         for (lun = 0; lun < plat->max_lun; lun++) {
>                                 struct udevice *bdev; /* block device */
>                                 /* block device description */
> +                               struct blk_desc _bd;
>                                 struct blk_desc *bdesc;
>                                 char str[10];
>
> +                               scsi_init_dev_desc_priv(&_bd);
> +                               _bd.lun = lun;
> +                               ret = scsi_detect_dev(i, &_bd, 0);
> +                               if (ret)
> +                                       /*
> +                                        * no device detected?
> +                                        * check the next lun.
> +                                        */
> +                                       continue;
> +
>                                 /*
>                                  * Create only one block device and do detection
>                                  * to make sure that there won't be a lot of
> @@ -590,17 +605,25 @@ int scsi_scan(int mode)
>                                  */
>                                 snprintf(str, sizeof(str), "id%dlun%d", i, lun);
>                                 ret = blk_create_devicef(dev, "scsi_blk",
> -                                                         str, IF_TYPE_SCSI,
> -                                                         -1, 0, 0, &bdev);
> +                                               str, IF_TYPE_SCSI,
> +                                               -1,
> +                                               _bd.blksz,
> +                                               _bd.blksz * _bd.lba,
> +                                               &bdev);

But why put these in here when...

>                                 if (ret) {
>                                         debug("Can't create device\n");
>                                         return ret;
>                                 }
>                                 bdesc = dev_get_uclass_platdata(bdev);
>
> +                               /*
> +                                * perform the detection once more but this
> +                                * time, let's initialize do the initialization
> +                                * of the partitions
> +                                */
>                                 scsi_init_dev_desc_priv(bdesc);

...they are overwritten here?

>                                 bdesc->lun = lun;
> -                               ret = scsi_detect_dev(i, bdesc);
> +                               ret = scsi_detect_dev(i, bdesc, 1);
>                                 if (ret) {
>                                         device_unbind(bdev);
>                                         continue;
> @@ -631,7 +654,7 @@ int scsi_scan(int mode)
>         for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
>                 for (lun = 0; lun < CONFIG_SYS_SCSI_MAX_LUN; lun++) {
>                         scsi_dev_desc[scsi_max_devs].lun = lun;
> -                       ret = scsi_detect_dev(i, &scsi_dev_desc[scsi_max_devs]);
> +                       ret = scsi_detect_dev(i, &scsi_dev_desc[scsi_max_devs], 1);
>                         if (ret)
>                                 continue;

Call part_init() here?

>
> --
> 1.9.1
>

Regards,
Simon

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

* [U-Boot] [PATCH 7/7] defconfig: dra7xx_evm: enable CONFIG_BLK and disk driver model for SCSI
  2017-03-24 12:24 ` [U-Boot] [PATCH 7/7] defconfig: dra7xx_evm: enable CONFIG_BLK and disk driver model for SCSI Jean-Jacques Hiblot
@ 2017-04-01  4:22   ` Simon Glass
  0 siblings, 0 replies; 16+ messages in thread
From: Simon Glass @ 2017-04-01  4:22 UTC (permalink / raw)
  To: u-boot

On 24 March 2017 at 06:24, Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
> Enable disk driver model for dra7xx_evm as dwc_ahci supports
> driver model. As a consequence we must also enable CONFIG_BLK and
> CONFIG_DM_USB.
>
> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
> ---
>  configs/dra7xx_evm_defconfig    | 4 ++++
>  configs/dra7xx_hs_evm_defconfig | 4 ++++
>  2 files changed, 8 insertions(+)

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

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

* [U-Boot] [PATCH 3/7] arm: omap-common: sata: prepare driver for DM conversion
  2017-04-01  4:21   ` Simon Glass
@ 2017-04-04 10:34     ` Jean-Jacques Hiblot
  0 siblings, 0 replies; 16+ messages in thread
From: Jean-Jacques Hiblot @ 2017-04-04 10:34 UTC (permalink / raw)
  To: u-boot



On 01/04/2017 06:21, Simon Glass wrote:
> Hi,
>
> On 24 March 2017 at 06:24, Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
>> From: Mugunthan V N <mugunthanvnm@ti.com>
>>
>> Prepare sata driver for DM conversion by abstracting sata phy
>> init to seperate function.
>>
>> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
>> ---
>>   arch/arm/mach-omap2/sata.c | 13 +++++++++----
>>   include/sata.h             |  2 ++
>>   2 files changed, 11 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/sata.c b/arch/arm/mach-omap2/sata.c
>> index 217f1c9..dce432b 100644
>> --- a/arch/arm/mach-omap2/sata.c
>> +++ b/arch/arm/mach-omap2/sata.c
>> @@ -32,16 +32,21 @@ struct omap_pipe3 sata_phy = {
>>          .dpll_map = dpll_map_sata,
>>   };
>>
>> +int enable_sata_phy(void)
> We should not be calling board functions from the driver. Can you
> instead add a SATA PHY uclass / driver?
Simon,

thanks for the review. I'll re-work the series in that direction. We 
already have all the required entries in the dts for this.

Jean-Jacques
>
>> +{
>> +       sata_phy.power_reg = (void __iomem *)(*ctrl)->control_phy_power_sata;
>> +
>> +       /* Power up the PHY */
>> +       return phy_pipe3_power_on(&sata_phy);
>> +}
>> +
>>   #ifndef CONFIG_DM_SCSI
>>   int init_sata(int dev)
>>   {
>>          int ret;
>>          u32 val;
>>
>> -       sata_phy.power_reg = (void __iomem *)(*ctrl)->control_phy_power_sata;
>> -
>> -       /* Power up the PHY */
>> -       phy_pipe3_power_on(&sata_phy);
>> +       enable_sata_phy();
>>
>>          /* Enable SATA module, No Idle, No Standby */
>>          val = TI_SATA_IDLE_NO | TI_SATA_STANDBY_NO;
>> diff --git a/include/sata.h b/include/sata.h
>> index d18cc9a..583b72d 100644
>> --- a/include/sata.h
>> +++ b/include/sata.h
>> @@ -18,4 +18,6 @@ int sata_port_status(int dev, int port);
>>   extern struct blk_desc sata_dev_desc[];
>>   #endif
>>
>> +int enable_sata_phy(void);
>> +
>>   #endif
>> --
>> 1.9.1
>>
>
> Regards,
> Simon
>

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

* [U-Boot] [PATCH 6/7] dm: scsi: fix scan
  2017-04-01  4:22   ` Simon Glass
@ 2017-04-04 10:43     ` Jean-Jacques Hiblot
  0 siblings, 0 replies; 16+ messages in thread
From: Jean-Jacques Hiblot @ 2017-04-04 10:43 UTC (permalink / raw)
  To: u-boot



On 01/04/2017 06:22, Simon Glass wrote:
> Hi Jean-Jacques,
>
> On 24 March 2017 at 06:24, Jean-Jacques Hiblot <jjhiblot@ti.com> wrote:
>> With DM_SCSI enabled, scsi scan suffers 2 problems:
>> * blk_create_devicef is called with blkz = 0, leading to a divide-by-0
>>    exception
>> * new blk devices are created at each scan.
>>
>> To fix this we start by removing all known SCSI devices at the beginning
>> of the scan. Then a detection process is started for each possible
>> device only to get the blksz and lba of the device (no call to part_init() yet).
>> If a device is found, we can call blk_create_devicef() with the right
>> parameters and continue the process.
>>
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
>> ---
>>   common/scsi.c | 35 +++++++++++++++++++++++++++++------
>>   1 file changed, 29 insertions(+), 6 deletions(-)
>>
>> diff --git a/common/scsi.c b/common/scsi.c
>> index fb5b407..3385cc2 100644
>> --- a/common/scsi.c
>> +++ b/common/scsi.c
>> @@ -480,7 +480,7 @@ 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, struct blk_desc *dev_desc)
>> +static int scsi_detect_dev(int target, struct blk_desc *dev_desc, int init_part)
>>   {
>>          unsigned char perq, modi;
>>          lbaint_t capacity;
>> @@ -539,7 +539,8 @@ static int scsi_detect_dev(int target, struct blk_desc *dev_desc)
>>          dev_desc->blksz = blksz;
>>          dev_desc->log2blksz = LOG2(dev_desc->blksz);
>>          dev_desc->type = perq;
>> -       part_init(&dev_desc[0]);
>> +       if (init_part)
>> +               part_init(&dev_desc[0]);
> Do you need this in here? The caller could just do it and avoid the
> extra parameter.
I simply tried as much as possible to avoid code duplication. But agreed 
it's not a very elegant solution. I'll rework this. Thanks again for the 
comments

>>   removable:
>>          return 0;
>>   }
>> @@ -565,6 +566,9 @@ int scsi_scan(int mode)
>>          if (ret)
>>                  return ret;
>>
>> +       /* remove all SCSI interfaces since we're going to (re)create them */
>> +       blk_unbind_all(IF_TYPE_SCSI);
>> +
> This seems to already be done a few lines up...is it needed?
No. It's just a rebase issue. I started the work on v2017.01 and didn't 
see the introduction of the unbind.
>>          uclass_foreach_dev(dev, uc) {
>>                  struct scsi_platdata *plat; /* scsi controller platdata */
>>
>> @@ -580,9 +584,20 @@ int scsi_scan(int mode)
>>                          for (lun = 0; lun < plat->max_lun; lun++) {
>>                                  struct udevice *bdev; /* block device */
>>                                  /* block device description */
>> +                               struct blk_desc _bd;
>>                                  struct blk_desc *bdesc;
>>                                  char str[10];
>>
>> +                               scsi_init_dev_desc_priv(&_bd);
>> +                               _bd.lun = lun;
>> +                               ret = scsi_detect_dev(i, &_bd, 0);
>> +                               if (ret)
>> +                                       /*
>> +                                        * no device detected?
>> +                                        * check the next lun.
>> +                                        */
>> +                                       continue;
>> +
>>                                  /*
>>                                   * Create only one block device and do detection
>>                                   * to make sure that there won't be a lot of
>> @@ -590,17 +605,25 @@ int scsi_scan(int mode)
>>                                   */
>>                                  snprintf(str, sizeof(str), "id%dlun%d", i, lun);
>>                                  ret = blk_create_devicef(dev, "scsi_blk",
>> -                                                         str, IF_TYPE_SCSI,
>> -                                                         -1, 0, 0, &bdev);
>> +                                               str, IF_TYPE_SCSI,
>> +                                               -1,
>> +                                               _bd.blksz,
>> +                                               _bd.blksz * _bd.lba,
>> +                                               &bdev);
> But why put these in here when...
>
>>                                  if (ret) {
>>                                          debug("Can't create device\n");
>>                                          return ret;
>>                                  }
>>                                  bdesc = dev_get_uclass_platdata(bdev);
>>
>> +                               /*
>> +                                * perform the detection once more but this
>> +                                * time, let's initialize do the initialization
>> +                                * of the partitions
>> +                                */
>>                                  scsi_init_dev_desc_priv(bdesc);
> ...they are overwritten here?
>
>>                                  bdesc->lun = lun;
>> -                               ret = scsi_detect_dev(i, bdesc);
>> +                               ret = scsi_detect_dev(i, bdesc, 1);
>>                                  if (ret) {
>>                                          device_unbind(bdev);
>>                                          continue;
>> @@ -631,7 +654,7 @@ int scsi_scan(int mode)
>>          for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
>>                  for (lun = 0; lun < CONFIG_SYS_SCSI_MAX_LUN; lun++) {
>>                          scsi_dev_desc[scsi_max_devs].lun = lun;
>> -                       ret = scsi_detect_dev(i, &scsi_dev_desc[scsi_max_devs]);
>> +                       ret = scsi_detect_dev(i, &scsi_dev_desc[scsi_max_devs], 1);
>>                          if (ret)
>>                                  continue;
> Call part_init() here?
>
>> --
>> 1.9.1
>>
> Regards,
> Simon
>

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

* [U-Boot] [PATCH 1/7] arm: omap: sata: move enable sata clocks to enable_basic_clocks()
  2017-03-24 12:24 ` [U-Boot] [PATCH 1/7] arm: omap: sata: move enable sata clocks to enable_basic_clocks() Jean-Jacques Hiblot
@ 2017-04-05 17:43   ` Tom Rini
  0 siblings, 0 replies; 16+ messages in thread
From: Tom Rini @ 2017-04-05 17:43 UTC (permalink / raw)
  To: u-boot

On Fri, Mar 24, 2017 at 01:24:41PM +0100, Jean-Jacques Hiblot wrote:

> From: Mugunthan V N <mugunthanvnm@ti.com>
> 
> All the clocks which has to be enabled has to be done in
> enable_basic_clocks(), so moving enable sata clock to common
> clocks enable function.
> 
> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

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

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

* [U-Boot] [PATCH 2/7] arm: omap: sata: compile out sata init apis when CONFIG_DM_SCSI is defined
  2017-03-24 12:24 ` [U-Boot] [PATCH 2/7] arm: omap: sata: compile out sata init apis when CONFIG_DM_SCSI is defined Jean-Jacques Hiblot
@ 2017-04-05 17:43   ` Tom Rini
  0 siblings, 0 replies; 16+ messages in thread
From: Tom Rini @ 2017-04-05 17:43 UTC (permalink / raw)
  To: u-boot

On Fri, Mar 24, 2017 at 01:24:42PM +0100, Jean-Jacques Hiblot wrote:

> From: Mugunthan V N <mugunthanvnm@ti.com>
> 
> Compile out sata init/reset apis as this will be implemented in
> scsi-uclass driver to initialize sata devices.
> 
> Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

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

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

end of thread, other threads:[~2017-04-05 17:43 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-24 12:24 [U-Boot] [PATCH 0/7] OMAP: Move SATA to use block driver model Jean-Jacques Hiblot
2017-03-24 12:24 ` [U-Boot] [PATCH 1/7] arm: omap: sata: move enable sata clocks to enable_basic_clocks() Jean-Jacques Hiblot
2017-04-05 17:43   ` Tom Rini
2017-03-24 12:24 ` [U-Boot] [PATCH 2/7] arm: omap: sata: compile out sata init apis when CONFIG_DM_SCSI is defined Jean-Jacques Hiblot
2017-04-05 17:43   ` Tom Rini
2017-03-24 12:24 ` [U-Boot] [PATCH 3/7] arm: omap-common: sata: prepare driver for DM conversion Jean-Jacques Hiblot
2017-04-01  4:21   ` Simon Glass
2017-04-04 10:34     ` Jean-Jacques Hiblot
2017-03-24 12:24 ` [U-Boot] [PATCH 4/7] drivers: block: dwc_ahci: Implement a driver for Synopsys DWC sata device Jean-Jacques Hiblot
2017-03-24 12:24 ` [U-Boot] [PATCH 5/7] dm: scsi: ahci: fill max_lun and max_id members of scsi_platdata Jean-Jacques Hiblot
2017-04-01  4:21   ` Simon Glass
2017-03-24 12:24 ` [U-Boot] [PATCH 6/7] dm: scsi: fix scan Jean-Jacques Hiblot
2017-04-01  4:22   ` Simon Glass
2017-04-04 10:43     ` Jean-Jacques Hiblot
2017-03-24 12:24 ` [U-Boot] [PATCH 7/7] defconfig: dra7xx_evm: enable CONFIG_BLK and disk driver model for SCSI Jean-Jacques Hiblot
2017-04-01  4:22   ` Simon Glass

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