Message ID | 1497419551-21834-2-git-send-email-varada@codeaurora.org (mailing list archive) |
---|---|
State | Accepted |
Commit | b702b9fb393ed1c19ab3ecb1552757522c982746 |
Headers | show |
Hi, On 06/14/2017 08:52 AM, Varadarajan Narayanan wrote: > Enable chip select support for QUP versions later than v1 Could you be more descriptive here because in the git history of the driver there is a commit "4a8573abe965115bc5b064401fd669b74e985258 spi: qup: Remove chip select function" which removes chip select functionality. So this patch leads to a situation where we use gpio cs for qup_v1 and not for next versions!? > > Signed-off-by: Sham Muthayyan <smuthayy@codeaurora.org> > Signed-off-by: Varadarajan Narayanan <varada@codeaurora.org> > --- > drivers/spi/spi-qup.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) <snip>
diff --git a/drivers/spi/spi-qup.c b/drivers/spi/spi-qup.c index 1bfa889..c0d4def 100644 --- a/drivers/spi/spi-qup.c +++ b/drivers/spi/spi-qup.c @@ -750,6 +750,24 @@ static int spi_qup_init_dma(struct spi_master *master, resource_size_t base) return ret; } +static void spi_qup_set_cs(struct spi_device *spi, bool val) +{ + struct spi_qup *controller; + u32 spi_ioc; + u32 spi_ioc_orig; + + controller = spi_master_get_devdata(spi->master); + spi_ioc = readl_relaxed(controller->base + SPI_IO_CONTROL); + spi_ioc_orig = spi_ioc; + if (!val) + spi_ioc |= SPI_IO_C_FORCE_CS; + else + spi_ioc &= ~SPI_IO_C_FORCE_CS; + + if (spi_ioc != spi_ioc_orig) + writel_relaxed(spi_ioc, controller->base + SPI_IO_CONTROL); +} + static int spi_qup_probe(struct platform_device *pdev) { struct spi_master *master; @@ -846,6 +864,9 @@ static int spi_qup_probe(struct platform_device *pdev) if (of_device_is_compatible(dev->of_node, "qcom,spi-qup-v1.1.1")) controller->qup_v1 = 1; + if (!controller->qup_v1) + master->set_cs = spi_qup_set_cs; + spin_lock_init(&controller->lock); init_completion(&controller->done);