* [PATCH 0/2] spi: more GPIO CS work
@ 2019-11-07 4:42 Chris Packham
2019-11-07 4:42 ` [PATCH 1/2] spi: bcm-qspi: Convert to use CS GPIO descriptors Chris Packham
2019-11-07 4:42 ` [PATCH 2/2] spi: spi-mem: fallback to using transfers when CS gpios are used Chris Packham
0 siblings, 2 replies; 5+ messages in thread
From: Chris Packham @ 2019-11-07 4:42 UTC (permalink / raw)
To: broonie, kdasu.kdev, bcm-kernel-feedback-list
Cc: linux-spi, linux-kernel, Chris Packham
I've got a platform using the BCM 58525 CPU. The hardware design
connects to two SPI devices using a slightly odd arrangement of
GPIOs and native chip select. These patches however should be
relevant to any platform using that CPU with "normal" CS GPIOs
Chris Packham (2):
spi: bcm-qspi: Convert to use CS GPIO descriptors
spi: spi-mem: fallback to using transfers when CS gpios are used
drivers/spi/spi-bcm-qspi.c | 7 +++++--
drivers/spi/spi-mem.c | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
--
2.24.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] spi: bcm-qspi: Convert to use CS GPIO descriptors
2019-11-07 4:42 [PATCH 0/2] spi: more GPIO CS work Chris Packham
@ 2019-11-07 4:42 ` Chris Packham
2019-11-07 13:13 ` Applied "spi: bcm-qspi: Convert to use CS GPIO descriptors" to the spi tree Mark Brown
2019-11-07 4:42 ` [PATCH 2/2] spi: spi-mem: fallback to using transfers when CS gpios are used Chris Packham
1 sibling, 1 reply; 5+ messages in thread
From: Chris Packham @ 2019-11-07 4:42 UTC (permalink / raw)
To: broonie, kdasu.kdev, bcm-kernel-feedback-list
Cc: linux-spi, linux-kernel, Chris Packham
Set use_gpio_descriptors to true and avoid asserting the native chip
select if the spi core has done it for us.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
drivers/spi/spi-bcm-qspi.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/spi-bcm-qspi.c b/drivers/spi/spi-bcm-qspi.c
index 7a3531856491..85bad70f59e3 100644
--- a/drivers/spi/spi-bcm-qspi.c
+++ b/drivers/spi/spi-bcm-qspi.c
@@ -803,7 +803,8 @@ static int bcm_qspi_bspi_exec_mem_op(struct spi_device *spi,
return -EIO;
from = op->addr.val;
- bcm_qspi_chip_select(qspi, spi->chip_select);
+ if (!spi->cs_gpiod)
+ bcm_qspi_chip_select(qspi, spi->chip_select);
bcm_qspi_write(qspi, MSPI, MSPI_WRITE_LOCK, 0);
/*
@@ -882,7 +883,8 @@ static int bcm_qspi_transfer_one(struct spi_master *master,
int slots;
unsigned long timeo = msecs_to_jiffies(100);
- bcm_qspi_chip_select(qspi, spi->chip_select);
+ if (!spi->cs_gpiod)
+ bcm_qspi_chip_select(qspi, spi->chip_select);
qspi->trans_pos.trans = trans;
qspi->trans_pos.byte = 0;
@@ -1234,6 +1236,7 @@ int bcm_qspi_probe(struct platform_device *pdev,
master->cleanup = bcm_qspi_cleanup;
master->dev.of_node = dev->of_node;
master->num_chipselect = NUM_CHIPSELECT;
+ master->use_gpio_descriptors = true;
qspi->big_endian = of_device_is_big_endian(dev->of_node);
--
2.24.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] spi: spi-mem: fallback to using transfers when CS gpios are used
2019-11-07 4:42 [PATCH 0/2] spi: more GPIO CS work Chris Packham
2019-11-07 4:42 ` [PATCH 1/2] spi: bcm-qspi: Convert to use CS GPIO descriptors Chris Packham
@ 2019-11-07 4:42 ` Chris Packham
2019-11-07 13:13 ` Applied "spi: spi-mem: fallback to using transfers when CS gpios are used" to the spi tree Mark Brown
1 sibling, 1 reply; 5+ messages in thread
From: Chris Packham @ 2019-11-07 4:42 UTC (permalink / raw)
To: broonie, kdasu.kdev, bcm-kernel-feedback-list
Cc: linux-spi, linux-kernel, Chris Packham
Devices with chip selects driven via GPIO are not compatible with the
spi-mem operations. Fallback to using standard spi transfers when the
device is connected with a gpio CS.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
drivers/spi/spi-mem.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c
index 9f0fa9f3116d..e5a46f0eb93b 100644
--- a/drivers/spi/spi-mem.c
+++ b/drivers/spi/spi-mem.c
@@ -286,7 +286,7 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
if (!spi_mem_internal_supports_op(mem, op))
return -ENOTSUPP;
- if (ctlr->mem_ops) {
+ if (ctlr->mem_ops && !mem->spi->cs_gpiod) {
ret = spi_mem_access_start(mem);
if (ret)
return ret;
--
2.24.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Applied "spi: spi-mem: fallback to using transfers when CS gpios are used" to the spi tree
2019-11-07 4:42 ` [PATCH 2/2] spi: spi-mem: fallback to using transfers when CS gpios are used Chris Packham
@ 2019-11-07 13:13 ` Mark Brown
0 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2019-11-07 13:13 UTC (permalink / raw)
To: Chris Packham
Cc: bcm-kernel-feedback-list, broonie, kdasu.kdev, linux-kernel,
linux-spi, Mark Brown
The patch
spi: spi-mem: fallback to using transfers when CS gpios are used
has been applied to the spi tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-5.5
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
From 05766050d5bd9af24dcaec6b29255a6f2b324543 Mon Sep 17 00:00:00 2001
From: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date: Thu, 7 Nov 2019 17:42:35 +1300
Subject: [PATCH] spi: spi-mem: fallback to using transfers when CS gpios are
used
Devices with chip selects driven via GPIO are not compatible with the
spi-mem operations. Fallback to using standard spi transfers when the
device is connected with a gpio CS.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Link: https://lore.kernel.org/r/20191107044235.4864-3-chris.packham@alliedtelesis.co.nz
Signed-off-by: Mark Brown <broonie@kernel.org>
---
drivers/spi/spi-mem.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c
index 9f0fa9f3116d..e5a46f0eb93b 100644
--- a/drivers/spi/spi-mem.c
+++ b/drivers/spi/spi-mem.c
@@ -286,7 +286,7 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
if (!spi_mem_internal_supports_op(mem, op))
return -ENOTSUPP;
- if (ctlr->mem_ops) {
+ if (ctlr->mem_ops && !mem->spi->cs_gpiod) {
ret = spi_mem_access_start(mem);
if (ret)
return ret;
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Applied "spi: bcm-qspi: Convert to use CS GPIO descriptors" to the spi tree
2019-11-07 4:42 ` [PATCH 1/2] spi: bcm-qspi: Convert to use CS GPIO descriptors Chris Packham
@ 2019-11-07 13:13 ` Mark Brown
0 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2019-11-07 13:13 UTC (permalink / raw)
To: Chris Packham
Cc: bcm-kernel-feedback-list, broonie, kdasu.kdev, linux-kernel,
linux-spi, Mark Brown
The patch
spi: bcm-qspi: Convert to use CS GPIO descriptors
has been applied to the spi tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-5.5
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
From 27fb2313f28d8c82adace68bf49f12fe810ba58c Mon Sep 17 00:00:00 2001
From: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date: Thu, 7 Nov 2019 17:42:34 +1300
Subject: [PATCH] spi: bcm-qspi: Convert to use CS GPIO descriptors
Set use_gpio_descriptors to true and avoid asserting the native chip
select if the spi core has done it for us.
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Link: https://lore.kernel.org/r/20191107044235.4864-2-chris.packham@alliedtelesis.co.nz
Signed-off-by: Mark Brown <broonie@kernel.org>
---
drivers/spi/spi-bcm-qspi.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/spi-bcm-qspi.c b/drivers/spi/spi-bcm-qspi.c
index 7a3531856491..85bad70f59e3 100644
--- a/drivers/spi/spi-bcm-qspi.c
+++ b/drivers/spi/spi-bcm-qspi.c
@@ -803,7 +803,8 @@ static int bcm_qspi_bspi_exec_mem_op(struct spi_device *spi,
return -EIO;
from = op->addr.val;
- bcm_qspi_chip_select(qspi, spi->chip_select);
+ if (!spi->cs_gpiod)
+ bcm_qspi_chip_select(qspi, spi->chip_select);
bcm_qspi_write(qspi, MSPI, MSPI_WRITE_LOCK, 0);
/*
@@ -882,7 +883,8 @@ static int bcm_qspi_transfer_one(struct spi_master *master,
int slots;
unsigned long timeo = msecs_to_jiffies(100);
- bcm_qspi_chip_select(qspi, spi->chip_select);
+ if (!spi->cs_gpiod)
+ bcm_qspi_chip_select(qspi, spi->chip_select);
qspi->trans_pos.trans = trans;
qspi->trans_pos.byte = 0;
@@ -1234,6 +1236,7 @@ int bcm_qspi_probe(struct platform_device *pdev,
master->cleanup = bcm_qspi_cleanup;
master->dev.of_node = dev->of_node;
master->num_chipselect = NUM_CHIPSELECT;
+ master->use_gpio_descriptors = true;
qspi->big_endian = of_device_is_big_endian(dev->of_node);
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-11-07 13:13 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-07 4:42 [PATCH 0/2] spi: more GPIO CS work Chris Packham
2019-11-07 4:42 ` [PATCH 1/2] spi: bcm-qspi: Convert to use CS GPIO descriptors Chris Packham
2019-11-07 13:13 ` Applied "spi: bcm-qspi: Convert to use CS GPIO descriptors" to the spi tree Mark Brown
2019-11-07 4:42 ` [PATCH 2/2] spi: spi-mem: fallback to using transfers when CS gpios are used Chris Packham
2019-11-07 13:13 ` Applied "spi: spi-mem: fallback to using transfers when CS gpios are used" to the spi tree Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).