Message ID | 1498556731-13087-2-git-send-email-varada@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Jun 27, 2017 at 03:15:18PM +0530, Varadarajan Narayanan wrote: > the chip select support was removed earlier in commit > 4a8573abe965115bc5b064401fd669b74e985258. Since the chip Please include human readable descriptions of things like commits and issues being discussed in e-mail in your mails, this makes them much easier for humans to read especially when they have no internet access. I do frequently catch up on my mail on flights or while otherwise travelling so this is even more pressing for me than just being about making things a bit easier to read.
Brown, On Mon, Jul 17, 2017 at 05:01:51PM +0100, Mark Brown wrote: > On Tue, Jun 27, 2017 at 03:15:18PM +0530, Varadarajan Narayanan wrote: > > > the chip select support was removed earlier in commit > > 4a8573abe965115bc5b064401fd669b74e985258. Since the chip > > Please include human readable descriptions of things like commits and > issues being discussed in e-mail in your mails, this makes them much > easier for humans to read especially when they have no internet access. > I do frequently catch up on my mail on flights or while otherwise > travelling so this is even more pressing for me than just being about > making things a bit easier to read. Sorry. The commit being referred to is (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4a8573abe965115bc5b064401fd669b74e985258) commit 4a8573abe965115bc5b064401fd669b74e985258 Author: Andy Gross <agross@codeaurora.org> Date: Thu Jun 12 14:34:10 2014 -0500 spi: qup: Remove chip select function This patch removes the chip select function. Chip select should instead be supported using GPIOs, defining the DT entry "cs-gpios", and letting the SPI core assert/deassert the chip select as it sees fit. The chip select control inside the controller is buggy. It is supposed to automatically assert the chip select based on the activity in the controller, but it is buggy and doesn't work at all. So instead we elect to use GPIOs. Signed-off-by: Andy Gross <agross@codeaurora.org> Signed-off-by: Mark Brown <broonie@linaro.org> Will update the commit log and repost the patches. Thanks Varada -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Varadarajan, On Tue, Jun 27, 2017 at 11:45 AM, Varadarajan Narayanan <varada@codeaurora.org> wrote: > Enable chip select support for QUP versions later than v1. > The chip select support was broken in QUP version 1. Hence > the chip select support was removed earlier in commit > 4a8573abe965115bc5b064401fd669b74e985258. Since the chip > select support is functional in recent versions of QUP, > re-enabling it for QUP versions later than v1. > > Signed-off-by: Sham Muthayyan <smuthayy@codeaurora.org> > Signed-off-by: Varadarajan Narayanan <varada@codeaurora.org> > --- a/drivers/spi/spi-qup.c > +++ b/drivers/spi/spi-qup.c > @@ -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; I know it was not introduced by your patch, but the proper way is to obtain the version flag from spi_qup_dt_match[].data. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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);