spi: fsl: Fix driver breakage when SPI_CS_HIGH is not set in spi->mode
Commit766c6b63aa
("spi: fix client driver breakages when using GPIO descriptors") broke fsl spi driver. As now we fully rely on gpiolib for handling the polarity of chip selects, the driver shall not alter the GPIO value anymore when SPI_CS_HIGH is not set in spi->mode. Fixes:766c6b63aa
("spi: fix client driver breakages when using GPIO descriptors") Cc: stable@vger.kernel.org Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Link: https://lore.kernel.org/r/6b51cc2bfbca70d3e9b9da7b7aa4c7a9d793ca0e.1610629002.git.christophe.leroy@csgroup.eu Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
7c53f6b671
commit
7a2da5d796
|
@ -115,14 +115,13 @@ static void fsl_spi_chipselect(struct spi_device *spi, int value)
|
|||
{
|
||||
struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(spi->master);
|
||||
struct fsl_spi_platform_data *pdata;
|
||||
bool pol = spi->mode & SPI_CS_HIGH;
|
||||
struct spi_mpc8xxx_cs *cs = spi->controller_state;
|
||||
|
||||
pdata = spi->dev.parent->parent->platform_data;
|
||||
|
||||
if (value == BITBANG_CS_INACTIVE) {
|
||||
if (pdata->cs_control)
|
||||
pdata->cs_control(spi, !pol);
|
||||
pdata->cs_control(spi, false);
|
||||
}
|
||||
|
||||
if (value == BITBANG_CS_ACTIVE) {
|
||||
|
@ -134,7 +133,7 @@ static void fsl_spi_chipselect(struct spi_device *spi, int value)
|
|||
fsl_spi_change_mode(spi);
|
||||
|
||||
if (pdata->cs_control)
|
||||
pdata->cs_control(spi, pol);
|
||||
pdata->cs_control(spi, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue