[PATCH 1/2] spi: nxp_fspi: Fix error reporting

On the i.MX8M Mini, ret = clk_set_rate() sets ret to the value of the rate the clock was able to set. When checking for errors, it only checks that it is not NULL. Since positive numbers are not errors, only check for negative numbers when handling errors.
Fixes: 383fded70c4f ("spi: nxp_fspi: new driver for the FlexSPI controller") Signed-off-by: Adam Ford aford173@gmail.com
diff --git a/drivers/spi/nxp_fspi.c b/drivers/spi/nxp_fspi.c index 006dd04b9e..d74561578a 100644 --- a/drivers/spi/nxp_fspi.c +++ b/drivers/spi/nxp_fspi.c @@ -815,7 +815,7 @@ static int nxp_fspi_default_setup(struct nxp_fspi *f)
/* the default frequency, we will change it later if necessary. */ ret = clk_set_rate(&f->clk, 20000000); - if (ret) + if (ret < 0) return ret;
ret = nxp_fspi_clk_prep_enable(f); @@ -906,7 +906,7 @@ static int nxp_fspi_set_speed(struct udevice *bus, uint speed) nxp_fspi_clk_disable_unprep(f);
ret = clk_set_rate(&f->clk, speed); - if (ret) + if (ret < 0) return ret;
ret = nxp_fspi_clk_prep_enable(f);

The i.MX8M Mini can use the FlexSPI driver. Add support for it to the driver.
Signed-off-by: Adam Ford aford173@gmail.com
diff --git a/drivers/spi/nxp_fspi.c b/drivers/spi/nxp_fspi.c index d74561578a..6c5bad4c2c 100644 --- a/drivers/spi/nxp_fspi.c +++ b/drivers/spi/nxp_fspi.c @@ -320,6 +320,14 @@ static const struct nxp_fspi_devtype_data lx2160a_data = { .little_endian = true, /* little-endian */ };
+static const struct nxp_fspi_devtype_data imx8mm_data = { + .rxfifo = SZ_512, /* (64 * 64 bits) */ + .txfifo = SZ_1K, /* (128 * 64 bits) */ + .ahb_buf_size = SZ_2K, /* (256 * 64 bits) */ + .quirks = 0, + .little_endian = true, /* little-endian */ +}; + struct nxp_fspi { struct udevice *dev; void __iomem *iobase; @@ -985,6 +993,7 @@ static const struct dm_spi_ops nxp_fspi_ops = {
static const struct udevice_id nxp_fspi_ids[] = { { .compatible = "nxp,lx2160a-fspi", .data = (ulong)&lx2160a_data, }, + { .compatible = "nxp,imx8mm-fspi", .data = (ulong)&imx8mm_data, }, { } };

The i.MX8M Mini can use the FlexSPI driver. Add support for it to the driver. Signed-off-by: Adam Ford aford173@gmail.com diff --git a/drivers/spi/nxp_fspi.c b/drivers/spi/nxp_fspi.c index d74561578a..6c5bad4c2c 100644 --- a/drivers/spi/nxp_fspi.c +++ b/drivers/spi/nxp_fspi.c @@ -320,6 +320,14 @@ static const struct nxp_fspi_devtype_data lx2160a_data = { .little_endian = true, /* little-endian */ };
+static const struct nxp_fspi_devtype_data imx8mm_data = {
- .rxfifo = SZ_512, /* (64 * 64 bits) */
- .txfifo = SZ_1K, /* (128 * 64 bits) */
- .ahb_buf_size = SZ_2K, /* (256 * 64 bits) */
- .quirks = 0,
- .little_endian = true, /* little-endian */
+};
struct nxp_fspi { struct udevice *dev; void __iomem *iobase; @@ -985,6 +993,7 @@ static const struct dm_spi_ops nxp_fspi_ops = {
static const struct udevice_id nxp_fspi_ids[] = { { .compatible = "nxp,lx2160a-fspi", .data = (ulong)&lx2160a_data, },
- { .compatible = "nxp,imx8mm-fspi", .data = (ulong)&imx8mm_data, }, { }
};
Applied to u-boot-imx, master, thanks !
Best regards, Stefano Babic

On 18/01/21 03:32PM, Adam Ford wrote:
On the i.MX8M Mini, ret = clk_set_rate() sets ret to the value of the rate the clock was able to set. When checking for errors, it only checks that it is not NULL. Since positive numbers are not errors, only check for negative numbers when handling errors.
Fixes: 383fded70c4f ("spi: nxp_fspi: new driver for the FlexSPI controller") Signed-off-by: Adam Ford aford173@gmail.com
Reviewed-by: Pratyush Yadav p.yadav@ti.com

On Tue, Jan 19, 2021 at 6:12 AM Pratyush Yadav p.yadav@ti.com wrote:
On 18/01/21 03:32PM, Adam Ford wrote:
On the i.MX8M Mini, ret = clk_set_rate() sets ret to the value of the rate the clock was able to set. When checking for errors, it only checks that it is not NULL. Since positive numbers are not errors, only check for negative numbers when handling errors.
Fixes: 383fded70c4f ("spi: nxp_fspi: new driver for the FlexSPI controller") Signed-off-by: Adam Ford aford173@gmail.com
Reviewed-by: Pratyush Yadav p.yadav@ti.com
Jagan,
Is this something you can take, or do I need to add someone to the CC list? It's been nearly a month, and it's holding up the ability for a QSPI driver on two boards.
thanks,
adam
-- Regards, Pratyush Yadav Texas Instruments India

On Tue, Feb 23, 2021 at 6:29 PM Adam Ford aford173@gmail.com wrote:
On Tue, Jan 19, 2021 at 6:12 AM Pratyush Yadav p.yadav@ti.com wrote:
On 18/01/21 03:32PM, Adam Ford wrote:
On the i.MX8M Mini, ret = clk_set_rate() sets ret to the value of the rate the clock was able to set. When checking for errors, it only checks that it is not NULL. Since positive numbers are not errors, only check for negative numbers when handling errors.
Fixes: 383fded70c4f ("spi: nxp_fspi: new driver for the FlexSPI controller") Signed-off-by: Adam Ford aford173@gmail.com
Reviewed-by: Pratyush Yadav p.yadav@ti.com
Jagan,
Is this something you can take, or do I need to add someone to the CC list? It's been nearly a month, and it's holding up the ability for a QSPI driver on two boards.
Didn't find it via patchwork before, thanks for notifying me.
Applied to u-boot-spi/master
participants (4)
-
Adam Ford
-
Jagan Teki
-
Pratyush Yadav
-
sbabic@denx.de