spi: bcm2835: make use of new bits_per_word_mask core feature
This driver only supports bits_per_word==8, so inform the SPI core of this. Remove all the open-coded validation that's no longer needed. Signed-off-by: Stephen Warren <swarren@wwwdotorg.org> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
543bb255a1
commit
f4b97eb506
|
@ -182,23 +182,6 @@ static irqreturn_t bcm2835_spi_interrupt(int irq, void *dev_id)
|
||||||
return IRQ_NONE;
|
return IRQ_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bcm2835_spi_check_transfer(struct spi_device *spi,
|
|
||||||
struct spi_transfer *tfr)
|
|
||||||
{
|
|
||||||
/* tfr==NULL when called from bcm2835_spi_setup() */
|
|
||||||
u32 bpw = tfr ? tfr->bits_per_word : spi->bits_per_word;
|
|
||||||
|
|
||||||
switch (bpw) {
|
|
||||||
case 8:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
dev_err(&spi->dev, "unsupported bits_per_word=%d\n", bpw);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int bcm2835_spi_start_transfer(struct spi_device *spi,
|
static int bcm2835_spi_start_transfer(struct spi_device *spi,
|
||||||
struct spi_transfer *tfr)
|
struct spi_transfer *tfr)
|
||||||
{
|
{
|
||||||
|
@ -273,19 +256,6 @@ static int bcm2835_spi_finish_transfer(struct spi_device *spi,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bcm2835_spi_setup(struct spi_device *spi)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret = bcm2835_spi_check_transfer(spi, NULL);
|
|
||||||
if (ret) {
|
|
||||||
dev_err(&spi->dev, "setup: invalid message\n");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int bcm2835_spi_transfer_one(struct spi_master *master,
|
static int bcm2835_spi_transfer_one(struct spi_master *master,
|
||||||
struct spi_message *mesg)
|
struct spi_message *mesg)
|
||||||
{
|
{
|
||||||
|
@ -297,10 +267,6 @@ static int bcm2835_spi_transfer_one(struct spi_master *master,
|
||||||
bool cs_change;
|
bool cs_change;
|
||||||
|
|
||||||
list_for_each_entry(tfr, &mesg->transfers, transfer_list) {
|
list_for_each_entry(tfr, &mesg->transfers, transfer_list) {
|
||||||
err = bcm2835_spi_check_transfer(spi, tfr);
|
|
||||||
if (err)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
err = bcm2835_spi_start_transfer(spi, tfr);
|
err = bcm2835_spi_start_transfer(spi, tfr);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -348,9 +314,9 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
|
||||||
platform_set_drvdata(pdev, master);
|
platform_set_drvdata(pdev, master);
|
||||||
|
|
||||||
master->mode_bits = BCM2835_SPI_MODE_BITS;
|
master->mode_bits = BCM2835_SPI_MODE_BITS;
|
||||||
|
master->bits_per_word_mask = BIT(8 - 1);
|
||||||
master->bus_num = -1;
|
master->bus_num = -1;
|
||||||
master->num_chipselect = 3;
|
master->num_chipselect = 3;
|
||||||
master->setup = bcm2835_spi_setup;
|
|
||||||
master->transfer_one_message = bcm2835_spi_transfer_one;
|
master->transfer_one_message = bcm2835_spi_transfer_one;
|
||||||
master->dev.of_node = pdev->dev.of_node;
|
master->dev.of_node = pdev->dev.of_node;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue