spi: mxs: Introduce spi_cs_is_valid()
Subsystems (2)
PATCH v2 1/2 spi: mxs: Introduce spi_cs_is_valid()
Introduce spi_cs_is_valid() for validating spi bus and chip select numbers.
---
Changes since v1:
- Newly introduced in v2
drivers/spi/mxs_spi.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-)
drivers/spi/mxs_spi.c +11 -2
@@ -51,14 +51,23 @@ void spi_init(void) { } +int spi_cs_is_valid (unsigned int bus,unsigned int cs) +{ +/* MXS SPI: 4 ports and 3 chip selects maximum */ +if (bus >3 || cs >2 ) +return 0 ; +else +return 1 ; +} +struct spi_slave *spi_setup_slave (unsigned int bus,unsigned int cs,unsigned int max_hz,unsigned int mode) {struct mxs_spi_slave *mxs_slave;uint32_t addr; -if (bus >3 ) { -printf ("MXS SPI: Max bus number is 3\n" ); +if (!spi_cs_is_valid (bus, cs)) { +printf ("mxs_spi: invalid bus %d / chip select %d\n" , bus, cs);return NULL ; }
Signature · 1 line
1.7.1
PATCH v2 2/2 spi: mxs: Allow other chip selects to work
MXS SSP controller may have up to three chip selects per port: SS0, SS1 and SS2.
Currently only SS0 is supported in the mxs_spi driver.
Allow all the three chip select to work by selecting the desired one in bits 20 and 21 of the HW_SSP_CTRL0 register.
---
Changes since v1:
- Check vor valid cs inside spi_cs_is_valid() (patch 1/2)
drivers/spi/mxs_spi.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
drivers/spi/mxs_spi.c +10 -0
@@ -34,6 +34,8 @@#define MXS_SPI_MAX_TIMEOUT 1000000#define MXS_SPI_PORT_OFFSET 0x2000 +#define MXS_SSP_CHIPSELECT_MASK 0x00300000 +#define MXS_SSP_CHIPSELECT_SHIFT 20struct mxs_spi_slave {struct spi_slave slave;
@@ -65,6 +67,8 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, {struct mxs_spi_slave *mxs_slave;uint32_t addr; +struct mx28_ssp_regs *ssp_regs; +int reg;if (!spi_cs_is_valid (bus, cs)) {printf ("mxs_spi: invalid bus %d / chip select %d\n" , bus, cs);
@@ -82,7 +86,13 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, mxs_slave->max_khz = max_hz /1000 ; mxs_slave->mode = mode; mxs_slave->regs = (struct mx28_ssp_regs *)addr; + ssp_regs = mxs_slave->regs; + reg =readl (&ssp_regs->hw_ssp_ctrl0); + reg &= ~(MXS_SSP_CHIPSELECT_MASK ); + reg |= cs <<MXS_SSP_CHIPSELECT_SHIFT ; + +writel (reg, &ssp_regs->hw_ssp_ctrl0);return &mxs_slave->slave; }
Signature · 1 line
1.7.1
PATCH v2 2/2 spi: mxs: Allow other chip selects to work
Dear Fabio Estevam,
Quoted 9 lines
MXS SSP controller may have up to three chip selects per port: SS0, SS1 and SS2.
Currently only SS0 is supported in the
mxs_spidriver.Allow all the three chip select to work by selecting the desired one in bits 20 and 21 of the
HW_SSP_CTRL0register.Signed-off-by Fabio Estevam <[email protected]>
Quoted 32 lines
---
Changes since v1:
- Check vor valid cs insidespi_cs_is_valid()(patch 1/2)drivers/spi/mxs_spi.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)drivers/spi/mxs_spi.c +4
-0@@ -34,6 +34,8 @@#define MXS_SPI_MAX_TIMEOUT 1000000#define MXS_SPI_PORT_OFFSET 0x2000 +#define MXS_SSP_CHIPSELECT_MASK 0x00300000 +#define MXS_SSP_CHIPSELECT_SHIFT 20struct mxs_spi_slave {struct spi_slave slave;@@ -65,6 +67,8 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, {struct mxs_spi_slave *mxs_slave;uint32_t addr; +struct mx28_ssp_regs *ssp_regs; +int reg;if (!spi_cs_is_valid (bus, cs)) {printf ("mxs_spi: invalid bus %d / chip select %d\n" , bus, cs);@@ -82,7 +86,13 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, mxs_slave->max_khz = max_hz / 1000; mxs_slave->mode = mode;
drivers/spi/mxs_spi.c struct spi_slave *spi_setup_slave(unsigned int bus, · line 97
Quoted 10 lines
drivers/spi/mxs_spi.c +6
-0mxs_slave->regs = (struct mx28_ssp_regs *)addr; + ssp_regs = mxs_slave->regs; + reg =readl (&ssp_regs->hw_ssp_ctrl0); + reg &= ~(MXS_SSP_CHIPSELECT_MASK ); + reg |= cs <<MXS_SSP_CHIPSELECT_SHIFT ; + +writel (reg, &ssp_regs->hw_ssp_ctrl0);return &mxs_slave->slave; }
Best regards,
Marek Vasut
PATCH v2 2/2 spi: mxs: Allow other chip selects to work
In reply to Fabio EstevamQuoted 9 lines · Fabio Estevam
MXS SSP controller may have up to three chip selects per port: SS0, SS1 and SS2.
Currently only SS0 is supported in the
mxs_spidriver.Allow all the three chip select to work by selecting the desired one in bits 20 and 21 of the
HW_SSP_CTRL0register.Signed-off-by Fabio Estevam <[email protected]>---
Applied to u-boot-imx, thanks.
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
PATCH v2 1/2 spi: mxs: Introduce spi_cs_is_valid()
In reply to Fabio EstevamDear Fabio Estevam,
Quoted 3 lines
Introduce
spi_cs_is_valid()for validating spi bus and chip select numbers.Signed-off-by Fabio Estevam <[email protected]>
Quoted 26 lines
---
Changes since v1:
- Newly introduced in v2drivers/spi/mxs_spi.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-)drivers/spi/mxs_spi.c +9
-0@@ -51,14 +51,23 @@ void spi_init(void) { } +int spi_cs_is_valid (unsigned int bus,unsigned int cs) +{ +/* MXS SPI: 4 ports and 3 chip selects maximum */ +if (bus >3 || cs >2 ) +return 0 ; +else +return 1 ; +} +struct spi_slave *spi_setup_slave (unsigned int bus,unsigned int cs,unsigned int max_hz,unsigned int mode)
drivers/spi/mxs_spi.c void spi_init(void) · line 72
Quoted 10 lines
drivers/spi/mxs_spi.c +2
-2{struct mxs_spi_slave *mxs_slave;uint32_t addr; -if (bus >3 ) { -printf ("MXS SPI: Max bus number is 3\n" ); +if (!spi_cs_is_valid (bus, cs)) { +printf ("mxs_spi: invalid bus %d / chip select %d\n" , bus, cs);return NULL ; }
Best regards,
Marek Vasut
PATCH v2 1/2 spi: mxs: Introduce spi_cs_is_valid()
In reply to Fabio EstevamQuoted 1 line · On Monday 23 April 2012 14:30:49 Fabio Estevam wrote:
Introduce
spi_cs_is_valid()for validating spi bus and chip select numbers.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120423/15a143ee/attachment.pgp>
PATCH v2 1/2 spi: mxs: Introduce spi_cs_is_valid()
In reply to Fabio EstevamQuoted 4 lines · Fabio Estevam
Introduce
spi_cs_is_valid()for validating spi bus and chip select numbers.Signed-off-by Fabio Estevam <[email protected]>---
Applied to u-boot-imx, thanks.
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================