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
|
@ -482,13 +482,33 @@ static int davinci_spi_setup(struct spi_device *spi)
|
||||||
int retval;
|
int retval;
|
||||||
struct davinci_spi *davinci_spi;
|
struct davinci_spi *davinci_spi;
|
||||||
struct davinci_spi_dma *davinci_spi_dma;
|
struct davinci_spi_dma *davinci_spi_dma;
|
||||||
|
struct davinci_spi_platform_data *pdata;
|
||||||
|
|
||||||
davinci_spi = spi_master_get_devdata(spi->master);
|
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 bits per word length is zero then set it default 8 */
|
||||||
if (!spi->bits_per_word)
|
if (!spi->bits_per_word)
|
||||||
spi->bits_per_word = 8;
|
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) {
|
if (use_dma && davinci_spi->dma_channels) {
|
||||||
davinci_spi_dma = &davinci_spi->dma_channels[spi->chip_select];
|
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,
|
static int davinci_spi_check_error(struct davinci_spi *davinci_spi,
|
||||||
int int_status)
|
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->bytes_per_word[spi->chip_select];
|
||||||
davinci_spi->rcount = davinci_spi->wcount;
|
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);
|
data1_reg_val = ioread32(davinci_spi->base + SPIDAT1);
|
||||||
|
|
||||||
/* Enable SPI */
|
/* 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_rx_completion);
|
||||||
init_completion(&davinci_spi_dma->dma_tx_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 */
|
count = t->len / data_type; /* the number of elements */
|
||||||
|
|
||||||
/* disable all interrupts for dma transfers */
|
/* disable all interrupts for dma transfers */
|
||||||
|
@ -1026,7 +1004,7 @@ static int davinci_spi_probe(struct platform_device *pdev)
|
||||||
udelay(100);
|
udelay(100);
|
||||||
iowrite32(1, davinci_spi->base + SPIGCR0);
|
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;
|
spipc0 = SPIPC0_DIFUN_MASK | SPIPC0_DOFUN_MASK | SPIPC0_CLKFUN_MASK;
|
||||||
iowrite32(spipc0, davinci_spi->base + SPIPC0);
|
iowrite32(spipc0, davinci_spi->base + SPIPC0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue