Merge remote-tracking branch 'spi/for-5.14' into spi-linus
This commit is contained in:
commit
d5f78f50ff
@ -444,7 +444,7 @@ static int mcfqspi_remove(struct platform_device *pdev)
|
||||
mcfqspi_wr_qmr(mcfqspi, MCFQSPI_QMR_MSTR);
|
||||
|
||||
mcfqspi_cs_teardown(mcfqspi);
|
||||
clk_disable(mcfqspi->clk);
|
||||
clk_disable_unprepare(mcfqspi->clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -213,12 +213,6 @@ static void davinci_spi_chipselect(struct spi_device *spi, int value)
|
||||
* line for the controller
|
||||
*/
|
||||
if (spi->cs_gpiod) {
|
||||
/*
|
||||
* FIXME: is this code ever executed? This host does not
|
||||
* set SPI_MASTER_GPIO_SS so this chipselect callback should
|
||||
* not get called from the SPI core when we are using
|
||||
* GPIOs for chip select.
|
||||
*/
|
||||
if (value == BITBANG_CS_ACTIVE)
|
||||
gpiod_set_value(spi->cs_gpiod, 1);
|
||||
else
|
||||
@ -945,7 +939,7 @@ static int davinci_spi_probe(struct platform_device *pdev)
|
||||
master->bus_num = pdev->id;
|
||||
master->num_chipselect = pdata->num_chipselect;
|
||||
master->bits_per_word_mask = SPI_BPW_RANGE_MASK(2, 16);
|
||||
master->flags = SPI_MASTER_MUST_RX;
|
||||
master->flags = SPI_MASTER_MUST_RX | SPI_MASTER_GPIO_SS;
|
||||
master->setup = davinci_spi_setup;
|
||||
master->cleanup = davinci_spi_cleanup;
|
||||
master->can_dma = davinci_spi_can_dma;
|
||||
|
@ -328,8 +328,16 @@ orion_spi_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
|
||||
static void orion_spi_set_cs(struct spi_device *spi, bool enable)
|
||||
{
|
||||
struct orion_spi *orion_spi;
|
||||
void __iomem *ctrl_reg;
|
||||
u32 val;
|
||||
|
||||
orion_spi = spi_master_get_devdata(spi->master);
|
||||
ctrl_reg = spi_reg(orion_spi, ORION_SPI_IF_CTRL_REG);
|
||||
|
||||
val = readl(ctrl_reg);
|
||||
|
||||
/* Clear existing chip-select and assertion state */
|
||||
val &= ~(ORION_SPI_CS_MASK | 0x1);
|
||||
|
||||
/*
|
||||
* If this line is using a GPIO to control chip select, this internal
|
||||
@ -338,9 +346,7 @@ static void orion_spi_set_cs(struct spi_device *spi, bool enable)
|
||||
* as it is handled by a GPIO, but that doesn't matter. What we need
|
||||
* is to deassert the old chip select and assert some other chip select.
|
||||
*/
|
||||
orion_spi_clrbits(orion_spi, ORION_SPI_IF_CTRL_REG, ORION_SPI_CS_MASK);
|
||||
orion_spi_setbits(orion_spi, ORION_SPI_IF_CTRL_REG,
|
||||
ORION_SPI_CS(spi->chip_select));
|
||||
val |= ORION_SPI_CS(spi->chip_select);
|
||||
|
||||
/*
|
||||
* Chip select logic is inverted from spi_set_cs(). For lines using a
|
||||
@ -350,9 +356,13 @@ static void orion_spi_set_cs(struct spi_device *spi, bool enable)
|
||||
* doesn't matter.
|
||||
*/
|
||||
if (!enable)
|
||||
orion_spi_setbits(orion_spi, ORION_SPI_IF_CTRL_REG, 0x1);
|
||||
else
|
||||
orion_spi_clrbits(orion_spi, ORION_SPI_IF_CTRL_REG, 0x1);
|
||||
val |= 0x1;
|
||||
|
||||
/*
|
||||
* To avoid toggling unwanted chip selects update the register
|
||||
* with a single write.
|
||||
*/
|
||||
writel(val, ctrl_reg);
|
||||
}
|
||||
|
||||
static inline int orion_spi_wait_till_ready(struct orion_spi *orion_spi)
|
||||
|
Loading…
x
Reference in New Issue
Block a user