From: kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org To: Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Eric Anholt <eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org>, Stefan Wahren <stefan.wahren-eS4NqCHxEME@public.gmane.org>, Hubert Denkmair <h.denkmair-4pT7WzY1KUiELgA04lAiVw@public.gmane.org>, linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-rpi-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org Subject: [PATCH 2/9] spi: bcm2835aux: warn in dmesg that native cs is not really supported Date: Sun, 24 Feb 2019 12:54:33 +0000 [thread overview] Message-ID: <20190224125440.16117-3-kernel@martin.sperl.org> (raw) In-Reply-To: <20190224125440.16117-1-kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org> From: Martin Sperl <kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org> >From personal bad experience (even as the author of the original driver) it shows that native-cs is "somewhat" supported by the spi bus driver when using a buggy device tree. So make sure that the driver is warning in dmesg about this fact that we are running in a not supported mode that may have surprizing limitations. Fixes: 1ea29b39f4c812ece2f936065a0a3d6fe44a263e Signed-off-by: Martin Sperl <kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org> --- drivers/spi/spi-bcm2835aux.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/drivers/spi/spi-bcm2835aux.c b/drivers/spi/spi-bcm2835aux.c index 2ece25250d86..4b6fdcb2cf4b 100644 --- a/drivers/spi/spi-bcm2835aux.c +++ b/drivers/spi/spi-bcm2835aux.c @@ -420,6 +420,38 @@ static void bcm2835aux_spi_handle_err(struct spi_master *master, bcm2835aux_spi_reset_hw(bs); } +static int bcm2835aux_spi_setup(struct spi_device *spi) +{ + int ret; + + if (spi->mode & SPI_NO_CS) + return 0; + /* sanity check for native cs */ + if (!gpio_is_valid(spi->cs_gpio)) { + /* for dt-backwards compatibility: only support native on CS0 + * known things not supported with broken native CS: + * * multiple chip-selects: cs0-cs2 are all + * simultaniously asserted whenever there is a transfer + * this even includes SPI_NO_CS + * * SPI_CS_HIGH: cs are always asserted low + * * cs_change: cs is deasserted after each spi_transfer + * * cs_delay_usec: cs is always deasserted one SCK cycle + * after the last transfer + * probably more... + */ + if (spi->chip_select == 0) { + dev_err(&spi->dev, + "native CS is not supported but may work for some use-cases for cs = 0 - please define a valid value cs-gpios in DT for complete feature set\n"); + return 0; + } + dev_err(&spi->dev, + "native CS is not supported for cs > 0 - please define a valid value cs-gpios in DT to enable multiple cs\n"); + return -EINVAL; + } + + return 0; +} + static int bcm2835aux_spi_probe(struct platform_device *pdev) { struct spi_master *master; @@ -449,6 +481,7 @@ static int bcm2835aux_spi_probe(struct platform_device *pdev) * a spi_transfer */ master->num_chipselect = 1; + master->setup = bcm2835aux_spi_setup; master->transfer_one = bcm2835aux_spi_transfer_one; master->handle_err = bcm2835aux_spi_handle_err; master->prepare_message = bcm2835aux_spi_prepare_message; -- 2.11.0
WARNING: multiple messages have this Message-ID (diff)
From: kernel@martin.sperl.org To: Mark Brown <broonie@kernel.org>, Eric Anholt <eric@anholt.net>, Stefan Wahren <stefan.wahren@i2se.com>, Hubert Denkmair <h.denkmair@intence.de>, linux-spi@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org Cc: Martin Sperl <kernel@martin.sperl.org> Subject: [PATCH 2/9] spi: bcm2835aux: warn in dmesg that native cs is not really supported Date: Sun, 24 Feb 2019 12:54:33 +0000 [thread overview] Message-ID: <20190224125440.16117-3-kernel@martin.sperl.org> (raw) In-Reply-To: <20190224125440.16117-1-kernel@martin.sperl.org> From: Martin Sperl <kernel@martin.sperl.org> From personal bad experience (even as the author of the original driver) it shows that native-cs is "somewhat" supported by the spi bus driver when using a buggy device tree. So make sure that the driver is warning in dmesg about this fact that we are running in a not supported mode that may have surprizing limitations. Fixes: 1ea29b39f4c812ece2f936065a0a3d6fe44a263e Signed-off-by: Martin Sperl <kernel@martin.sperl.org> --- drivers/spi/spi-bcm2835aux.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/drivers/spi/spi-bcm2835aux.c b/drivers/spi/spi-bcm2835aux.c index 2ece25250d86..4b6fdcb2cf4b 100644 --- a/drivers/spi/spi-bcm2835aux.c +++ b/drivers/spi/spi-bcm2835aux.c @@ -420,6 +420,38 @@ static void bcm2835aux_spi_handle_err(struct spi_master *master, bcm2835aux_spi_reset_hw(bs); } +static int bcm2835aux_spi_setup(struct spi_device *spi) +{ + int ret; + + if (spi->mode & SPI_NO_CS) + return 0; + /* sanity check for native cs */ + if (!gpio_is_valid(spi->cs_gpio)) { + /* for dt-backwards compatibility: only support native on CS0 + * known things not supported with broken native CS: + * * multiple chip-selects: cs0-cs2 are all + * simultaniously asserted whenever there is a transfer + * this even includes SPI_NO_CS + * * SPI_CS_HIGH: cs are always asserted low + * * cs_change: cs is deasserted after each spi_transfer + * * cs_delay_usec: cs is always deasserted one SCK cycle + * after the last transfer + * probably more... + */ + if (spi->chip_select == 0) { + dev_err(&spi->dev, + "native CS is not supported but may work for some use-cases for cs = 0 - please define a valid value cs-gpios in DT for complete feature set\n"); + return 0; + } + dev_err(&spi->dev, + "native CS is not supported for cs > 0 - please define a valid value cs-gpios in DT to enable multiple cs\n"); + return -EINVAL; + } + + return 0; +} + static int bcm2835aux_spi_probe(struct platform_device *pdev) { struct spi_master *master; @@ -449,6 +481,7 @@ static int bcm2835aux_spi_probe(struct platform_device *pdev) * a spi_transfer */ master->num_chipselect = 1; + master->setup = bcm2835aux_spi_setup; master->transfer_one = bcm2835aux_spi_transfer_one; master->handle_err = bcm2835aux_spi_handle_err; master->prepare_message = bcm2835aux_spi_prepare_message; -- 2.11.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-02-24 12:54 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-02-24 12:54 [PATCH 0/9] spi: bcm2835aux: bug fixes and improvements kernel-TqfNSX0MhmxHKSADF0wUEw 2019-02-24 12:54 ` kernel 2019-02-24 12:54 ` [PATCH 1/9] spi: bcm2835aux: fix driver to not allow 65535 (=-1) cs-gpios kernel 2019-02-24 12:54 ` kernel [not found] ` <20190224125440.16117-1-kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org> 2019-02-24 12:54 ` kernel-TqfNSX0MhmxHKSADF0wUEw [this message] 2019-02-24 12:54 ` [PATCH 2/9] spi: bcm2835aux: warn in dmesg that native cs is not really supported kernel 2019-02-24 12:54 ` [PATCH 3/9] spi: bcm2835aux: setup gpio-cs to output and correct level during setup kernel-TqfNSX0MhmxHKSADF0wUEw 2019-02-24 12:54 ` kernel 2019-02-24 12:54 ` [PATCH 4/9] spi: bcm2835aux: add driver specific stats to debugfs kernel-TqfNSX0MhmxHKSADF0wUEw 2019-02-24 12:54 ` kernel 2019-02-24 12:54 ` [PATCH 5/9] spi: bcm2835aux: make the polling duration limits configurable kernel-TqfNSX0MhmxHKSADF0wUEw 2019-02-24 12:54 ` kernel 2019-02-24 12:54 ` [PATCH 7/9] spi: bcm2835aux: remove dangerous uncontrolled read of fifo kernel-TqfNSX0MhmxHKSADF0wUEw 2019-02-24 12:54 ` kernel 2019-02-24 12:54 ` [PATCH 8/9] spi: bcm2835aux: use BCM2835_AUX_SPI_STAT_RX_LVL kernel-TqfNSX0MhmxHKSADF0wUEw 2019-02-24 12:54 ` kernel 2019-02-24 12:54 ` [PATCH 9/9] spi: bcm2835aux: remove dead code kernel-TqfNSX0MhmxHKSADF0wUEw 2019-02-24 12:54 ` kernel 2019-02-24 19:22 ` [PATCH 0/9] spi: bcm2835aux: bug fixes and improvements Stefan Wahren 2019-02-24 19:22 ` Stefan Wahren 2019-02-24 20:11 ` kernel 2019-02-24 20:11 ` kernel 2019-02-24 12:54 ` [PATCH 6/9] spi: bcm2835aux: unifying code between polling and interrupt driven code kernel 2019-02-24 12:54 ` kernel
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190224125440.16117-3-kernel@martin.sperl.org \ --to=kernel-tqfnsx0mhmxhksadf0wuew@public.gmane.org \ --cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \ --cc=eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org \ --cc=h.denkmair-4pT7WzY1KUiELgA04lAiVw@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-rpi-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=stefan.wahren-eS4NqCHxEME@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.