Browse Source

spi: davinci: configure the invariable bits in spipc0 only once

Configure the data-in, data-out and clock functionality pins
in SPIPC0 register only once during probe. No need to set these
bits for each transfer.

Signed-off-by: Brian Niebuhr <bniebuhr@efjohnson.com>
Tested-By: Michael Williamson <michael.williamson@criticallink.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Brian Niebuhr 15 years ago
parent
commit
f34bd4cc68
1 changed files with 5 additions and 3 deletions
  1. 5 3
      drivers/spi/davinci_spi.c

+ 5 - 3
drivers/spi/davinci_spi.c

@@ -536,9 +536,6 @@ static int davinci_spi_bufs_prep(struct spi_device *spi,
 	 * optimize for both flags staying cleared.
 	 * optimize for both flags staying cleared.
 	 */
 	 */
 
 
-	op_mode = SPIPC0_DIFUN_MASK
-		| SPIPC0_DOFUN_MASK
-		| SPIPC0_CLKFUN_MASK;
 	if (!(spi->mode & SPI_NO_CS)) {
 	if (!(spi->mode & SPI_NO_CS)) {
 		pdata = davinci_spi->pdata;
 		pdata = davinci_spi->pdata;
 		if (!pdata->chip_sel ||
 		if (!pdata->chip_sel ||
@@ -886,6 +883,7 @@ static int davinci_spi_probe(struct platform_device *pdev)
 	resource_size_t	dma_tx_chan = SPI_NO_RESOURCE;
 	resource_size_t	dma_tx_chan = SPI_NO_RESOURCE;
 	resource_size_t	dma_eventq = SPI_NO_RESOURCE;
 	resource_size_t	dma_eventq = SPI_NO_RESOURCE;
 	int i = 0, ret = 0;
 	int i = 0, ret = 0;
+	u32 spipc0;
 
 
 	pdata = pdev->dev.platform_data;
 	pdata = pdev->dev.platform_data;
 	if (pdata == NULL) {
 	if (pdata == NULL) {
@@ -1028,6 +1026,10 @@ 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 */
+	spipc0 = SPIPC0_DIFUN_MASK | SPIPC0_DOFUN_MASK | SPIPC0_CLKFUN_MASK;
+	iowrite32(spipc0, davinci_spi->base + SPIPC0);
+
 	/* initialize chip selects */
 	/* initialize chip selects */
 	if (pdata->chip_sel) {
 	if (pdata->chip_sel) {
 		for (i = 0; i < pdata->num_chipselect; i++) {
 		for (i = 0; i < pdata->num_chipselect; i++) {