Message ID | 1361861289-30332-2-git-send-email-wenyou.yang@atmel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, 26 Feb 2013 14:47:54 +0800, Wenyou Yang <wenyou.yang@atmel.com> wrote: > if the spi property "cs-gpios" is set as below: > > cs-gpios = <0>, <&pioC 11 0>, <0>, <0>; > > the master->num_chipselect will wrongly be set to 0, > and the spi fail to probe. > > Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> > Cc: spi-devel-general@lists.sourceforge.net > Cc: linux-kernel@vger.kernel.org I think I've got this bug fixed in the core spi code. Give it a couple of days and retest with linux-next. g.
On 14:47 Tue 26 Feb , Wenyou Yang wrote: > if the spi property "cs-gpios" is set as below: > > cs-gpios = <0>, <&pioC 11 0>, <0>, <0>; > > the master->num_chipselect will wrongly be set to 0, > and the spi fail to probe. > > Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> > Cc: spi-devel-general@lists.sourceforge.net > Cc: linux-kernel@vger.kernel.org > --- > drivers/spi/spi-atmel.c | 2 +- > drivers/spi/spi.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c > index ab34497..5bf3786 100644 > --- a/drivers/spi/spi-atmel.c > +++ b/drivers/spi/spi-atmel.c > @@ -944,7 +944,7 @@ static int atmel_spi_probe(struct platform_device *pdev) > > master->dev.of_node = pdev->dev.of_node; > master->bus_num = pdev->id; > - master->num_chipselect = master->dev.of_node ? 0 : 4; > + master->num_chipselect = 4; Nack we use 0 hardware gpio we only use the cs-gpio and you do not follow the binding it's cs-gpios = < 0 0 0 &pioC 11 0>; so the code work a expected Best Regards, J. > master->setup = atmel_spi_setup; > master->transfer = atmel_spi_transfer; > master->cleanup = atmel_spi_cleanup; > diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c > index 19ee901..d88cbef 100644 > --- a/drivers/spi/spi.c > +++ b/drivers/spi/spi.c > @@ -1070,7 +1070,7 @@ static int of_spi_register_master(struct spi_master *master) > master->num_chipselect = max(nb, master->num_chipselect); > > if (nb < 1) > - return 0; > + nb = master->num_chipselect; > > cs = devm_kzalloc(&master->dev, > sizeof(int) * master->num_chipselect, > -- > 1.7.9.5 >
> -----Original Message----- > From: Grant Likely [mailto:glikely@secretlab.ca] On Behalf Of Grant Likely > Sent: 2013?3?3? 7:16 > To: Yang, Wenyou; linux-arm-kernel@lists.infradead.org > Cc: Ferre, Nicolas; plagnioj@jcrosoft.com; richard.genoud@gmail.com; Lin, JM; > Yang, Wenyou; spi-devel-general@lists.sourceforge.net; > linux-kernel@vger.kernel.org > Subject: Re: [PATCH v5 01/16] spi/spi-atmel: fix master->num_chipselect > wrongly set. > > On Tue, 26 Feb 2013 14:47:54 +0800, Wenyou Yang <wenyou.yang@atmel.com> > wrote: > > if the spi property "cs-gpios" is set as below: > > > > cs-gpios = <0>, <&pioC 11 0>, <0>, <0>; > > > > the master->num_chipselect will wrongly be set to 0, > > and the spi fail to probe. > > > > Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> > > Cc: spi-devel-general@lists.sourceforge.net > > Cc: linux-kernel@vger.kernel.org > > I think I've got this bug fixed in the core spi code. Give it a couple > of days and retest with linux-next. Hi Grant, Yes, in v3.9-rc1 this bug fixed, I retested on v3.9-rc1. But on "spi/next" git tree, it should to apply this patch. I sent the patches version 6, could you take a look them? Thanks a lot for your work. > > g. Best Regards, Wenyou Yang
diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c index ab34497..5bf3786 100644 --- a/drivers/spi/spi-atmel.c +++ b/drivers/spi/spi-atmel.c @@ -944,7 +944,7 @@ static int atmel_spi_probe(struct platform_device *pdev) master->dev.of_node = pdev->dev.of_node; master->bus_num = pdev->id; - master->num_chipselect = master->dev.of_node ? 0 : 4; + master->num_chipselect = 4; master->setup = atmel_spi_setup; master->transfer = atmel_spi_transfer; master->cleanup = atmel_spi_cleanup; diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 19ee901..d88cbef 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -1070,7 +1070,7 @@ static int of_spi_register_master(struct spi_master *master) master->num_chipselect = max(nb, master->num_chipselect); if (nb < 1) - return 0; + nb = master->num_chipselect; cs = devm_kzalloc(&master->dev, sizeof(int) * master->num_chipselect,
if the spi property "cs-gpios" is set as below: cs-gpios = <0>, <&pioC 11 0>, <0>, <0>; the master->num_chipselect will wrongly be set to 0, and the spi fail to probe. Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> Cc: spi-devel-general@lists.sourceforge.net Cc: linux-kernel@vger.kernel.org --- drivers/spi/spi-atmel.c | 2 +- drivers/spi/spi.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)