diff options
| -rw-r--r-- | drivers/spi/spi-pxa2xx.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c index a98df7eeb42d..fe792106bdc5 100644 --- a/drivers/spi/spi-pxa2xx.c +++ b/drivers/spi/spi-pxa2xx.c | |||
| @@ -118,6 +118,7 @@ static void lpss_ssp_setup(struct driver_data *drv_data) | |||
| 118 | */ | 118 | */ |
| 119 | orig = readl(drv_data->ioaddr + offset + SPI_CS_CONTROL); | 119 | orig = readl(drv_data->ioaddr + offset + SPI_CS_CONTROL); |
| 120 | 120 | ||
| 121 | /* Test SPI_CS_CONTROL_SW_MODE bit enabling */ | ||
| 121 | value = orig | SPI_CS_CONTROL_SW_MODE; | 122 | value = orig | SPI_CS_CONTROL_SW_MODE; |
| 122 | writel(value, drv_data->ioaddr + offset + SPI_CS_CONTROL); | 123 | writel(value, drv_data->ioaddr + offset + SPI_CS_CONTROL); |
| 123 | value = readl(drv_data->ioaddr + offset + SPI_CS_CONTROL); | 124 | value = readl(drv_data->ioaddr + offset + SPI_CS_CONTROL); |
| @@ -126,10 +127,13 @@ static void lpss_ssp_setup(struct driver_data *drv_data) | |||
| 126 | goto detection_done; | 127 | goto detection_done; |
| 127 | } | 128 | } |
| 128 | 129 | ||
| 129 | value &= ~SPI_CS_CONTROL_SW_MODE; | 130 | orig = readl(drv_data->ioaddr + offset + SPI_CS_CONTROL); |
| 131 | |||
| 132 | /* Test SPI_CS_CONTROL_SW_MODE bit disabling */ | ||
| 133 | value = orig & ~SPI_CS_CONTROL_SW_MODE; | ||
| 130 | writel(value, drv_data->ioaddr + offset + SPI_CS_CONTROL); | 134 | writel(value, drv_data->ioaddr + offset + SPI_CS_CONTROL); |
| 131 | value = readl(drv_data->ioaddr + offset + SPI_CS_CONTROL); | 135 | value = readl(drv_data->ioaddr + offset + SPI_CS_CONTROL); |
| 132 | if (value != orig) { | 136 | if (value != (orig & ~SPI_CS_CONTROL_SW_MODE)) { |
| 133 | offset = 0x800; | 137 | offset = 0x800; |
| 134 | goto detection_done; | 138 | goto detection_done; |
| 135 | } | 139 | } |
