Skip to content

Commit

Permalink
spi: orion: Add multiple chip select support to spi-orion
Browse files Browse the repository at this point in the history
This commit adds support for multiple hardware chip selects to spi-orion.
Different SoCs support different number of chip selects (up to
8 on some platforms). The driver allows up to this number, and it is up
to the implementer to only use the chip selects that are available.

Signed-off-by: Ken Wilson <ken.wilson@opengear.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Ken Wilson authored and Mark Brown committed Jan 16, 2015
1 parent 75872eb commit 2324440
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion drivers/spi/spi-orion.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,12 @@
/* Runtime PM autosuspend timeout: PM is fairly light on this driver */
#define SPI_AUTOSUSPEND_TIMEOUT 200

#define ORION_NUM_CHIPSELECTS 1 /* only one slave is supported*/
/* Some SoCs using this driver support up to 8 chip selects.
* It is up to the implementer to only use the chip selects
* that are available.
*/
#define ORION_NUM_CHIPSELECTS 8

#define ORION_SPI_WAIT_RDY_MAX_LOOP 2000 /* in usec */

#define ORION_SPI_IF_CTRL_REG 0x00
Expand All @@ -44,6 +49,10 @@
#define ARMADA_SPI_CLK_PRESCALE_MASK 0xDF
#define ORION_SPI_MODE_MASK (ORION_SPI_MODE_CPOL | \
ORION_SPI_MODE_CPHA)
#define ORION_SPI_CS_MASK 0x1C
#define ORION_SPI_CS_SHIFT 2
#define ORION_SPI_CS(cs) ((cs << ORION_SPI_CS_SHIFT) & \
ORION_SPI_CS_MASK)

enum orion_spi_type {
ORION_SPI,
Expand Down Expand Up @@ -221,6 +230,10 @@ static void orion_spi_set_cs(struct spi_device *spi, bool enable)

orion_spi = spi_master_get_devdata(spi->master);

orion_spi_clrbits(orion_spi, ORION_SPI_IF_CTRL_REG, ORION_SPI_CS_MASK);
orion_spi_setbits(orion_spi, ORION_SPI_IF_CTRL_REG,
ORION_SPI_CS(spi->chip_select));

/* Chip select logic is inverted from spi_set_cs */
if (!enable)
orion_spi_setbits(orion_spi, ORION_SPI_IF_CTRL_REG, 0x1);
Expand Down

0 comments on commit 2324440

Please sign in to comment.