v1->v2 New in v2 update Kconfig replace __sh_qspi_setup to sh_qspi_setup add missing memeber of platform data
Signed-off-by: Akash Gajjar <ak...@openedev.com> --- drivers/spi/Kconfig | 12 +++++----- drivers/spi/sh_qspi.c | 49 +++++++++++++++++++------------------- include/dm/platform_data/qspi_sh.h | 4 ---- 3 files changed, 31 insertions(+), 34 deletions(-) diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig index ec92b84..81079c5 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig @@ -155,6 +155,12 @@ config SANDBOX_SPI }; }; +config SH_QSPI + bool "Renesas Quad SPI driver" + help + Enable the Renesas Quad SPI controller driver. This driver can be + used on Renesas SoCs. + config STM32_QSPI bool "STM32F7 QSPI driver" depends on STM32F7 @@ -259,12 +265,6 @@ config SH_SPI Enable the SuperH SPI controller driver. This driver can be used on various SuperH SoCs, such as SH7757. -config SH_QSPI - bool "Renesas Quad SPI driver" - help - Enable the Renesas Quad SPI controller driver. This driver can be - used on Renesas SoCs. - config TI_QSPI bool "TI QSPI driver" help diff --git a/drivers/spi/sh_qspi.c b/drivers/spi/sh_qspi.c index 5fdd52e..b81cee5 100644 --- a/drivers/spi/sh_qspi.c +++ b/drivers/spi/sh_qspi.c @@ -77,49 +77,48 @@ struct sh_qspi_priv { struct sh_qspi_regs *regs; }; -static int __sh_qspi_setup(struct sh_qspi_priv *priv) +static void sh_qspi_setup(struct sh_qspi_priv *priv) { - /* QSPI initialize */ - priv->regs = (struct sh_qspi_regs *)SH_QSPI_BASE; + struct sh_qspi_regs *regs = priv->regs; /* Set master mode only */ - writeb(SPCR_MSTR, &priv->regs->spcr); + writeb(SPCR_MSTR, ®s->spcr); /* Set SSL signal level */ - writeb(0x00, &priv->regs->sslp); + writeb(0x00, ®s->sslp); /* Set MOSI signal value when transfer is in idle state */ - writeb(SPPCR_IO3FV | SPPCR_IO2FV, &priv->regs->sppcr); + writeb(SPPCR_IO3FV | SPPCR_IO2FV, ®s->sppcr); /* Set bit rate. See 58.3.8 Quad Serial Peripheral Interface */ - writeb(0x01, &priv->regs->spbr); + writeb(0x01, ®s->spbr); /* Disable Dummy Data Transmission */ - writeb(0x00, &priv->regs->spdcr); + writeb(0x00, ®s->spdcr); /* Set clock delay value */ - writeb(0x00, &priv->regs->spckd); + writeb(0x00, ®s->spckd); /* Set SSL negation delay value */ - writeb(0x00, &priv->regs->sslnd); + writeb(0x00, ®s->sslnd); /* Set next-access delay value */ - writeb(0x00, &priv->regs->spnd); + writeb(0x00, ®s->spnd); /* Set equence command */ - writew(SPCMD_INIT2, &priv->regs->spcmd0); + writew(SPCMD_INIT2, ®s->spcmd0); /* Reset transfer and receive Buffer */ - setbits_8(&priv->regs->spbfcr, SPBFCR_TXRST | SPBFCR_RXRST); + setbits_8(®s->spbfcr, SPBFCR_TXRST | SPBFCR_RXRST); /* Clear transfer and receive Buffer control bit */ - clrbits_8(&priv->regs->spbfcr, SPBFCR_TXRST | SPBFCR_RXRST); + clrbits_8(®s->spbfcr, SPBFCR_TXRST | SPBFCR_RXRST); /* Set equence control method. Use equence0 only */ - writeb(0x00, &priv->regs->spscr); + writeb(0x00, ®s->spscr); /* Enable SPI function */ - setbits_8(&priv->regs->spcr, SPCR_SPE); + setbits_8(®s->spcr, SPCR_SPE); } static int sh_qspi_set_speed(struct udevice *bus, uint hz) @@ -156,7 +155,7 @@ static int sh_qspi_xfer(struct udevice *dev, unsigned int bitlen, if (dout == NULL && din == NULL) { if (flags & SPI_XFER_END) - spi_cs_deactivate(regs); + spi_cs_deactivate(regs); /* TODO */ return 0; } @@ -168,7 +167,7 @@ static int sh_qspi_xfer(struct udevice *dev, unsigned int bitlen, nbyte = bitlen / 8; if (flags & SPI_XFER_BEGIN) { - spi_cs_activate(regs); + spi_cs_activate(regs); /* TODO */ /* Set 1048576 byte */ writel(0x100000, spbmul0); @@ -219,7 +218,7 @@ static int sh_qspi_xfer(struct udevice *dev, unsigned int bitlen, } if (flags & SPI_XFER_END) - spi_cs_deactivate(regs); + spi_cs_deactivate(regs); /* TODO */ return ret; } @@ -229,7 +228,9 @@ static int sh_qspi_probe(struct udevice *bus) struct sh_qspi_platdata *plat = bus->platdata; struct sh_qspi_priv *priv = dev_get_priv(bus); - __sh_qspi_setup(priv); + priv->regs = plat->regs; + + sh_qspi_setup(priv); return 0; } @@ -252,14 +253,14 @@ static int sh_qspi_ofdata_to_platadata(struct udevice *bus) if (addr == FDT_ADDR_T_NONE) return -EINVAL; - plat->cs = fdtdec_get_int(gd->fdt_blob, dev_of_offset(bus), - "num-cs", 4); + plat->regs = (struct sh_qspi_regs *regs)addr; return 0; } -static const struct udevice_id davinci_spi_ids[] = { - { .compatible = "sh,sh-qspi" }, +/* TODO: update comptaible device tree binding */ +static const struct udevice_id sh_qspi_ids[] = { + { .compatible = " " }, { } }; #endif diff --git a/include/dm/platform_data/qspi_sh.h b/include/dm/platform_data/qspi_sh.h index 1a8529c..14479ad 100644 --- a/include/dm/platform_data/qspi_sh.h +++ b/include/dm/platform_data/qspi_sh.h @@ -7,10 +7,6 @@ #ifndef __qspi_sh_h #define __qspi_sh_h -/* - * struct sh_qspi_platdata - information about a sh qspi module - * - */ struct sh_qspi_platdata { struct sh_qspi_regs *regs; uint cs; -- 2.7.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot