From 240cd7566e7b98ef5f88b8d2f36c54e8d83f576e Mon Sep 17 00:00:00 2001 From: Vipul Kumar Date: Mon, 25 Jun 2018 14:13:57 +0530 Subject: [PATCH 1/6] spi: zynq_qspi: Fixed incorrect return value error This patch replaced "return 0" with "return status" to fix the incorrect return value error reported by the coverity. Reviewed-by: Michal Simek Signed-off-by: Vipul Kumar [jagan: rebased on master] Signed-off-by: Jagan Teki --- drivers/spi/zynq_qspi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/spi/zynq_qspi.c b/drivers/spi/zynq_qspi.c index ee8796d470..9ad1927a5d 100644 --- a/drivers/spi/zynq_qspi.c +++ b/drivers/spi/zynq_qspi.c @@ -486,7 +486,7 @@ static int zynq_qspi_transfer(struct zynq_qspi_priv *priv) break; } - return 0; + return status; } static int zynq_qspi_claim_bus(struct udevice *dev) From 618e8e20c23a367bea3484b68694374bc86cdb03 Mon Sep 17 00:00:00 2001 From: Michael Trimarchi Date: Wed, 20 Jun 2018 22:51:17 +0200 Subject: [PATCH 2/6] spi: mxc: Fix compilation problem of DM_SPI class driver drivers/spi/mxc_spi.c:507: undefined reference to `dev_get_addr' linux-ld.bfd: BFD (GNU Binutils) 2.29.1 assertion fail elf32-arm.c:9509 Signed-off-by: Michael Trimarchi Reviewed-by: Fabio Estevam Reviewed-by: Peng Fan Reviewed-by: Jagan Teki --- drivers/spi/mxc_spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c index b77129cc31..fcb214af20 100644 --- a/drivers/spi/mxc_spi.c +++ b/drivers/spi/mxc_spi.c @@ -504,7 +504,7 @@ static int mxc_spi_probe(struct udevice *bus) return -EINVAL; } - plat->base = dev_get_addr(bus); + plat->base = devfdt_get_addr(bus); if (plat->base == FDT_ADDR_T_NONE) return -ENODEV; From 34ad74914140dc6060b56a27641c686e86d7a9a4 Mon Sep 17 00:00:00 2001 From: Michael Trimarchi Date: Wed, 20 Jun 2018 22:51:18 +0200 Subject: [PATCH 3/6] spi: mxc_spi: Fix chipselect on DM_SPI driver uclass CS GPIO activation low/high is determinated by the device tree so we don't need to take in accoung in cs_activate and cs_deactivate Signed-off-by: Michael Trimarchi Reviewed-by: Peng Fan Reviewed-by: Jagan Teki --- drivers/spi/mxc_spi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c index fcb214af20..0dccc38b82 100644 --- a/drivers/spi/mxc_spi.c +++ b/drivers/spi/mxc_spi.c @@ -60,7 +60,7 @@ static inline struct mxc_spi_slave *to_mxc_spi_slave(struct spi_slave *slave) static void mxc_spi_cs_activate(struct mxc_spi_slave *mxcs) { if (CONFIG_IS_ENABLED(DM_SPI)) { - dm_gpio_set_value(&mxcs->ss, mxcs->ss_pol); + dm_gpio_set_value(&mxcs->ss, 1); } else { if (mxcs->gpio > 0) gpio_set_value(mxcs->gpio, mxcs->ss_pol); @@ -70,7 +70,7 @@ static void mxc_spi_cs_activate(struct mxc_spi_slave *mxcs) static void mxc_spi_cs_deactivate(struct mxc_spi_slave *mxcs) { if (CONFIG_IS_ENABLED(DM_SPI)) { - dm_gpio_set_value(&mxcs->ss, !(mxcs->ss_pol)); + dm_gpio_set_value(&mxcs->ss, 0); } else { if (mxcs->gpio > 0) gpio_set_value(mxcs->gpio, !(mxcs->ss_pol)); @@ -508,7 +508,7 @@ static int mxc_spi_probe(struct udevice *bus) if (plat->base == FDT_ADDR_T_NONE) return -ENODEV; - ret = dm_gpio_set_value(&plat->ss, !(mxcs->ss_pol)); + ret = dm_gpio_set_value(&plat->ss, 0); if (ret) { dev_err(bus, "Setting cs error\n"); return ret; From b1d2b529b4137740f7f1575ba3d6561297a6a848 Mon Sep 17 00:00:00 2001 From: Hannes Schmelzer Date: Sat, 2 Jun 2018 08:06:47 +0200 Subject: [PATCH 4/6] spi: omap3: pre-initialize bus-speed with max. slave-speed Otherwise the frequency is zero and the clock divider cannot be setup by 'omap3_spi_set_speed' function. Signed-off-by: Hannes Schmelzer Reviewed-by: Jagan Teki --- drivers/spi/omap3_spi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/spi/omap3_spi.c b/drivers/spi/omap3_spi.c index 4169abdef6..a149abec77 100644 --- a/drivers/spi/omap3_spi.c +++ b/drivers/spi/omap3_spi.c @@ -590,6 +590,8 @@ static int omap3_spi_claim_bus(struct udevice *dev) struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev); priv->cs = slave_plat->cs; + priv->freq = slave_plat->max_hz; + _omap3_spi_claim_bus(priv); return 0; From 9cddf70ead79f7b7c113d7481860a14b61aa6e0b Mon Sep 17 00:00:00 2001 From: Hannes Schmelzer Date: Sat, 2 Jun 2018 08:06:48 +0200 Subject: [PATCH 5/6] spi: omap3: fix set_speed and set_mode dm callbacks commit 84807922874e03895bbf15c4472a2dcee8fbbd03 ("spi: omap3: Skip set_mode, set_speed from claim") did break SPI support on my AM335x board. The named commit: - ignored the responsible arguments (speed, mode) The set speed/mode function must use the supplied function arguments to work properly. With this commit we take those arguments and transfer them to the priv-data. - used wrong udevice pointer for getting priv data the udevice-pointer within function argument is already the spi-bus device, so it is wrong looking here for some parent (ocp-bus in this case) and getting priv-pointer from there. Signed-off-by: Hannes Schmelzer Reviewed-by: Jagan Teki --- drivers/spi/omap3_spi.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/spi/omap3_spi.c b/drivers/spi/omap3_spi.c index a149abec77..766436ea5f 100644 --- a/drivers/spi/omap3_spi.c +++ b/drivers/spi/omap3_spi.c @@ -650,12 +650,10 @@ static int omap3_spi_xfer(struct udevice *dev, unsigned int bitlen, static int omap3_spi_set_speed(struct udevice *dev, unsigned int speed) { - struct udevice *bus = dev->parent; - struct omap3_spi_priv *priv = dev_get_priv(bus); - struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev); - priv->cs = slave_plat->cs; - priv->freq = slave_plat->max_hz; + struct omap3_spi_priv *priv = dev_get_priv(dev); + + priv->freq = speed; _omap3_spi_set_speed(priv); return 0; @@ -663,12 +661,10 @@ static int omap3_spi_set_speed(struct udevice *dev, unsigned int speed) static int omap3_spi_set_mode(struct udevice *dev, uint mode) { - struct udevice *bus = dev->parent; - struct omap3_spi_priv *priv = dev_get_priv(bus); - struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev); + struct omap3_spi_priv *priv = dev_get_priv(dev); + + priv->mode = mode; - priv->cs = slave_plat->cs; - priv->mode = slave_plat->mode; _omap3_spi_set_mode(priv); return 0; From 51dce7d2bfdecd974412634e4a0758ac55edcc00 Mon Sep 17 00:00:00 2001 From: Ashish Kumar Date: Mon, 25 Jun 2018 15:45:11 +0530 Subject: [PATCH 6/6] mtd: spi: Correct parameters for s25fs512s flash Change sector size to 256KiB in table spi_flash_ids. Signed-off-by: Ashish Kumar Reviewed-by: Jagan Teki --- drivers/mtd/spi/spi_flash_ids.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mtd/spi/spi_flash_ids.c b/drivers/mtd/spi/spi_flash_ids.c index c45d2e80be..54d491c873 100644 --- a/drivers/mtd/spi/spi_flash_ids.c +++ b/drivers/mtd/spi/spi_flash_ids.c @@ -110,7 +110,7 @@ const struct spi_flash_info spi_flash_ids[] = { {"s25fl256s_256k", INFO(0x010219, 0x4d00, 256 * 1024, 128, RD_FULL | WR_QPP) }, {"s25fs256s_64k", INFO6(0x010219, 0x4d0181, 64 * 1024, 512, RD_FULL | WR_QPP | SECT_4K) }, {"s25fl256s_64k", INFO(0x010219, 0x4d01, 64 * 1024, 512, RD_FULL | WR_QPP) }, - {"s25fs512s", INFO6(0x010220, 0x4d0081, 128 * 1024, 512, RD_FULL | WR_QPP | SECT_4K) }, + {"s25fs512s", INFO6(0x010220, 0x4d0081, 256 * 1024, 256, RD_FULL | WR_QPP | SECT_4K) }, {"s25fl512s_256k", INFO(0x010220, 0x4d00, 256 * 1024, 256, RD_FULL | WR_QPP) }, {"s25fl512s_64k", INFO(0x010220, 0x4d01, 64 * 1024, 1024, RD_FULL | WR_QPP) }, {"s25fl512s_512k", INFO(0x010220, 0x4f00, 256 * 1024, 256, RD_FULL | WR_QPP) },