spi: fsl: Fix driver breakage when SPI_CS_HIGH is not set in spi->mode
commit 7a2da5d7960a64ee923fe3e31f01a1101052c66f upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
04ed7f1da6
commit
da02e4ca8a
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user