From: Oleksij Rempel <ore-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
To: Fabio Estevam <festevam-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Greg Ungerer <gerg-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>,
Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Sascha Hauer <kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
"linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCHv3 1/2] spi: imx: fix use of native chip-selects with devicetree
Date: Thu, 20 Jul 2017 08:34:50 +0200 [thread overview]
Message-ID: <20170720063449.qvi3s7faapcncoqm@pengutronix.de> (raw)
In-Reply-To: <CAOMZO5Dq8mAULR+L6HJUMc6f=-d9QPZmn92+jzwKLuGYDA_AaA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
Hi Greg,
On Tue, Jul 18, 2017 at 09:53:58PM -0300, Fabio Estevam wrote:
> Adding Pengutronix folks on Cc.
>
> On Tue, Jul 11, 2017 at 1:22 AM, Greg Ungerer <gerg-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org> wrote:
> > The commonly used mechanism of specifying the hardware or native
> > chip-select on an SPI device in devicetree (that is "cs-gpios = <0>")
> > does not result in the native chip-select being configured for use.
> > So external SPI devices that require use of the native chip-select
> > will not work.
> >
> > You can successfully specify native chip-selects if using a platform
> > setup by specifying the cs-gpio as negative offset by 32. And that
> > works correctly. You cannot use the same method in devicetree.
> >
> > The logic in the spi-imx.c driver during probe uses core spi function
> > of_spi_register_master() in spi.c to parse the "cs-gpios" devicetree tag.
> > For valid GPIO values that will be recorded for use, all other entries in
> > the cs_gpios list will be set to -ENOENT. So entries like "<0>" will be
> > set to -ENOENT in the cs_gpios list.
> >
> > When the SPI device registers are setup the code will use the GPIO
> > listed in the cs_gpios list for the desired chip-select. If the cs_gpio
> > is less then 0 then it is intended to be for a native chip-select, and
> > its cs_gpio value is added to 32 to get the chipselect number to use.
> > Problem is that with devicetree this can only ever be -ENOENT (which
> > is -2), and that alone results in an invalid chip-select number. But also
> > doesn't allow selection of the native chip-select at all.
> >
> > To fix, if the cs_gpio specified for this spi device is not a
> > valid GPIO then use the "chip_select" (that is the native chip-select
> > number) for hardware setup.
> >
> > Signed-off-by: Greg Ungerer <gerg-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
> > ---
> > drivers/spi/spi-imx.c | 8 ++++----
> > 1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c
> > index b402530..f4fe66c 100644
> > --- a/drivers/spi/spi-imx.c
> > +++ b/drivers/spi/spi-imx.c
> > @@ -524,8 +524,8 @@ static int mx31_config(struct spi_device *spi, struct spi_imx_config *config)
> > reg |= MX31_CSPICTRL_POL;
> > if (spi->mode & SPI_CS_HIGH)
> > reg |= MX31_CSPICTRL_SSPOL;
> > - if (spi->cs_gpio < 0)
> > - reg |= (spi->cs_gpio + 32) <<
> > + if (!gpio_is_valid(spi->cs_gpio))
> > + reg |= (spi->chip_select) <<
> > (is_imx35_cspi(spi_imx) ? MX35_CSPICTRL_CS_SHIFT :
> > MX31_CSPICTRL_CS_SHIFT);
> >
> > @@ -616,8 +616,8 @@ static int mx21_config(struct spi_device *spi, struct spi_imx_config *config)
> > reg |= MX21_CSPICTRL_POL;
> > if (spi->mode & SPI_CS_HIGH)
> > reg |= MX21_CSPICTRL_SSPOL;
> > - if (spi->cs_gpio < 0)
> > - reg |= (spi->cs_gpio + 32) << MX21_CSPICTRL_CS_SHIFT;
> > + if (!gpio_is_valid(spi->cs_gpio))
> > + reg |= spi->chip_select << MX21_CSPICTRL_CS_SHIFT;
> >
> > writel(reg, spi_imx->base + MXC_CSPICTRL);
> >
hm... do I see this correctly, all native chip_selects should
be registered before gpio based CS?
For example like this?
cs-gpios = <0>, <&gpio1 1 0>, <&gpio1 2 0>;
Looks like we don't have any sanity checks for this kind of
configuration:
cs-gpios = <&gpio1 1 0>, <&gpio1 2 0>, <0>;
We may shift some wired numbers here:
reg |= spi->chip_select << MX21_CSPICTRL_CS_SHIFT;
this should be reflected in the documentation too:
Documentation/devicetree/bindings/spi/spi-bus.txt
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-07-20 6:34 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-11 4:22 [PATCHv3 0/2] spi: imx: native chip selects and devicetree Greg Ungerer
[not found] ` <1499746932-14850-1-git-send-email-gerg-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
2017-07-11 4:22 ` [PATCHv3 1/2] spi: imx: fix use of native chip-selects with devicetree Greg Ungerer
[not found] ` <1499746932-14850-2-git-send-email-gerg-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
2017-07-19 0:49 ` Vladimir Zapolskiy
[not found] ` <cfe8f524-ba18-60d2-2c1b-94903e5c4df5-ChpfBGZJDbMAvxtiuMwx3w@public.gmane.org>
2017-07-19 1:51 ` Greg Ungerer
2017-07-19 0:53 ` Fabio Estevam
[not found] ` <CAOMZO5Dq8mAULR+L6HJUMc6f=-d9QPZmn92+jzwKLuGYDA_AaA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-20 6:34 ` Oleksij Rempel [this message]
[not found] ` <20170720063449.qvi3s7faapcncoqm-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2017-07-20 13:00 ` Greg Ungerer
[not found] ` <2892f819-f1a2-b68d-be01-e8ac7f4b4222-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
2017-07-24 6:21 ` Oleksij Rempel
[not found] ` <20170724062147.o7tccwskxfuls3ej-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2017-08-09 13:00 ` Greg Ungerer
[not found] ` <239ae959-ce96-711b-dbfb-4e892b7eab3b-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
2017-08-10 6:09 ` Oleksij Rempel
[not found] ` <8ccba0c6-cd35-db2e-6a3f-32b79609271d-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2017-08-10 9:35 ` Vladimir Zapolskiy
[not found] ` <b3e80e47-d1e5-41f9-a744-dc01e51d779e-nmGgyN9QBj3QT0dZR+AlfA@public.gmane.org>
2017-08-10 11:35 ` Greg Ungerer
[not found] ` <b0b60f4a-7ee9-c0e5-9eb0-ac6a29555e5c-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
2017-08-10 11:47 ` Oleksij Rempel
2017-08-10 11:49 ` Uwe Kleine-König
[not found] ` <20170810114938.bsuztdxmngys2ekg-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2017-08-10 12:24 ` Greg Ungerer
[not found] ` <6dea9014-6e45-199b-16de-418728757662-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
2017-08-10 12:40 ` Uwe Kleine-König
[not found] ` <20170810124049.msmi2pfqmpoafsml-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2017-08-10 13:21 ` Greg Ungerer
[not found] ` <ac92f8ad-3ba6-a577-dc9c-9e8b6689afd4-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
2017-08-10 15:17 ` Uwe Kleine-König
2017-07-11 4:22 ` [PATCHv3 2/2] spi: imx: document use of native chip-selects in devicetree Greg Ungerer
[not found] ` <1499746932-14850-3-git-send-email-gerg-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
2017-07-19 0:32 ` Vladimir Zapolskiy
2017-07-19 0:37 ` Fabio Estevam
[not found] ` <CAOMZO5A6CZAQUh3mBpH3AdEtcTH-=tdMdqL-SV+4=zcstVQEaQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-19 0:39 ` Vladimir Zapolskiy
[not found] ` <42e1aad1-ca53-ba70-2922-25e2b083d971-ChpfBGZJDbMAvxtiuMwx3w@public.gmane.org>
2017-07-19 0:42 ` Fabio Estevam
[not found] ` <CAOMZO5B55NzBpZscqQECt=2nUQatnU7s2Oc8YLkxFa-dbaB=bA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-19 1:07 ` Vladimir Zapolskiy
2017-07-19 1:05 ` Greg Ungerer
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=20170720063449.qvi3s7faapcncoqm@pengutronix.de \
--to=ore-bicnvbalz9megne8c9+irq@public.gmane.org \
--cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=festevam-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=gerg-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org \
--cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=linux-spi-u79uwXL29TY76Z2rM5mHXA@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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).