mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 01:41:39 +00:00
spi: davinci: remove unnecessary function davinci_spi_bufs_prep()
The function davinci_spi_bufs_prep() is doing stuff that davinci_spi_setup() is doing. Eliminate it and move the work to davinci_spi_setup() Signed-off-by: Brian Niebuhr <bniebuhr@efjohnson.com> Tested-By: Michael Williamson <michael.williamson@criticallink.com> Signed-off-by: Sekhar Nori <nsekhar@ti.com>
This commit is contained in:
parent
f34bd4cc68
commit
be88471b96
1 changed files with 21 additions and 43 deletions
|
@ -482,13 +482,33 @@ static int davinci_spi_setup(struct spi_device *spi)
|
|||
int retval;
|
||||
struct davinci_spi *davinci_spi;
|
||||
struct davinci_spi_dma *davinci_spi_dma;
|
||||
struct davinci_spi_platform_data *pdata;
|
||||
|
||||
davinci_spi = spi_master_get_devdata(spi->master);
|
||||
pdata = davinci_spi->pdata;
|
||||
|
||||
/* if bits per word length is zero then set it default 8 */
|
||||
if (!spi->bits_per_word)
|
||||
spi->bits_per_word = 8;
|
||||
|
||||
if (!(spi->mode & SPI_NO_CS)) {
|
||||
if ((pdata->chip_sel == NULL) ||
|
||||
(pdata->chip_sel[spi->chip_select] == SPI_INTERN_CS))
|
||||
set_io_bits(davinci_spi->base + SPIPC0,
|
||||
1 << spi->chip_select);
|
||||
|
||||
}
|
||||
|
||||
if (spi->mode & SPI_READY)
|
||||
set_io_bits(davinci_spi->base + SPIPC0, SPIPC0_SPIENA_MASK);
|
||||
|
||||
if (spi->mode & SPI_LOOP)
|
||||
set_io_bits(davinci_spi->base + SPIGCR1,
|
||||
SPIGCR1_LOOPBACK_MASK);
|
||||
else
|
||||
clear_io_bits(davinci_spi->base + SPIGCR1,
|
||||
SPIGCR1_LOOPBACK_MASK);
|
||||
|
||||
if (use_dma && davinci_spi->dma_channels) {
|
||||
davinci_spi_dma = &davinci_spi->dma_channels[spi->chip_select];
|
||||
|
||||
|
@ -523,40 +543,6 @@ static void davinci_spi_cleanup(struct spi_device *spi)
|
|||
}
|
||||
}
|
||||
|
||||
static int davinci_spi_bufs_prep(struct spi_device *spi,
|
||||
struct davinci_spi *davinci_spi)
|
||||
{
|
||||
struct davinci_spi_platform_data *pdata;
|
||||
int op_mode = 0;
|
||||
|
||||
/*
|
||||
* REVISIT unless devices disagree about SPI_LOOP or
|
||||
* SPI_READY (SPI_NO_CS only allows one device!), this
|
||||
* should not need to be done before each message...
|
||||
* optimize for both flags staying cleared.
|
||||
*/
|
||||
|
||||
if (!(spi->mode & SPI_NO_CS)) {
|
||||
pdata = davinci_spi->pdata;
|
||||
if (!pdata->chip_sel ||
|
||||
pdata->chip_sel[spi->chip_select] == SPI_INTERN_CS)
|
||||
op_mode |= 1 << spi->chip_select;
|
||||
}
|
||||
if (spi->mode & SPI_READY)
|
||||
op_mode |= SPIPC0_SPIENA_MASK;
|
||||
|
||||
iowrite32(op_mode, davinci_spi->base + SPIPC0);
|
||||
|
||||
if (spi->mode & SPI_LOOP)
|
||||
set_io_bits(davinci_spi->base + SPIGCR1,
|
||||
SPIGCR1_LOOPBACK_MASK);
|
||||
else
|
||||
clear_io_bits(davinci_spi->base + SPIGCR1,
|
||||
SPIGCR1_LOOPBACK_MASK);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int davinci_spi_check_error(struct davinci_spi *davinci_spi,
|
||||
int int_status)
|
||||
{
|
||||
|
@ -664,10 +650,6 @@ static int davinci_spi_bufs_pio(struct spi_device *spi, struct spi_transfer *t)
|
|||
davinci_spi->bytes_per_word[spi->chip_select];
|
||||
davinci_spi->rcount = davinci_spi->wcount;
|
||||
|
||||
ret = davinci_spi_bufs_prep(spi, davinci_spi);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
data1_reg_val = ioread32(davinci_spi->base + SPIDAT1);
|
||||
|
||||
/* Enable SPI */
|
||||
|
@ -769,10 +751,6 @@ static int davinci_spi_bufs_dma(struct spi_device *spi, struct spi_transfer *t)
|
|||
init_completion(&davinci_spi_dma->dma_rx_completion);
|
||||
init_completion(&davinci_spi_dma->dma_tx_completion);
|
||||
|
||||
ret = davinci_spi_bufs_prep(spi, davinci_spi);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
count = t->len / data_type; /* the number of elements */
|
||||
|
||||
/* disable all interrupts for dma transfers */
|
||||
|
@ -1026,7 +1004,7 @@ static int davinci_spi_probe(struct platform_device *pdev)
|
|||
udelay(100);
|
||||
iowrite32(1, davinci_spi->base + SPIGCR0);
|
||||
|
||||
/* Set up SPIPC0. CS and ENA init is done in davinci_spi_bufs_prep */
|
||||
/* Set up SPIPC0. CS and ENA init is done in davinci_spi_setup */
|
||||
spipc0 = SPIPC0_DIFUN_MASK | SPIPC0_DOFUN_MASK | SPIPC0_CLKFUN_MASK;
|
||||
iowrite32(spipc0, davinci_spi->base + SPIPC0);
|
||||
|
||||
|
|
Loading…
Reference in a new issue