Skip to content

Commit

Permalink
spi: davinci: fix to support more than 2 chip selects
Browse files Browse the repository at this point in the history
Currently, the driver defines SPI_MAX_CHIPSELECT as 2 and
use per device array bytes_per_word based on this. This breaks
if num_chipselect per device is greater than 2. This patch
fix this and allocate memory for this array based on
num_chipselect.

It's preparation patch to enable GPIO CS feature for
Davinci SPI.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
  • Loading branch information
Murali Karicheri authored and Mark Brown committed Jul 31, 2014
1 parent 7171511 commit 7480e75
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions drivers/spi/spi-davinci.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@

#define SPI_NO_RESOURCE ((resource_size_t)-1)

#define SPI_MAX_CHIPSELECT 2

#define CS_DEFAULT 0xFF

#define SPIFMT_PHASE_MASK BIT(16)
Expand Down Expand Up @@ -142,7 +140,7 @@ struct davinci_spi {
void (*get_rx)(u32 rx_data, struct davinci_spi *);
u32 (*get_tx)(struct davinci_spi *);

u8 bytes_per_word[SPI_MAX_CHIPSELECT];
u8 *bytes_per_word;
};

static struct davinci_spi_config davinci_spi_default_cfg;
Expand Down Expand Up @@ -876,6 +874,14 @@ static int davinci_spi_probe(struct platform_device *pdev)
/* pdata in dspi is now updated and point pdata to that */
pdata = &dspi->pdata;

dspi->bytes_per_word = devm_kzalloc(&pdev->dev,
sizeof(*dspi->bytes_per_word) *
pdata->num_chipselect, GFP_KERNEL);
if (dspi->bytes_per_word == NULL) {
ret = -ENOMEM;
goto free_master;
}

r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (r == NULL) {
ret = -ENOENT;
Expand Down

0 comments on commit 7480e75

Please sign in to comment.