Re: [PATCH V2] spi/pl022: Fix range checking for bits per word
On Tue, 17 Apr 2012 11:29:37 +0200, Linus Walleij wrote: > On Tue, Apr 17, 2012 at 9:10 AM, Vinit Shenoy wrote: > > > pl022 ssp controller supports word lengths from 4 to 16 (or 32) bits. > > Currently implemented checks were incorrect. It has following check > > > > if (pl022->vendor->max_bpw >= 32) > > > > which must be checking for <=. > > > > Also error print message is incorrect, that prints "range is from 1 to > > 16". > > > > Fix both these issues. > > > > Signed-off-by: Vinit Shenoy > > --- > > V1->V2: > > - Fixed the check: > > Â Â Â Â if (pl022->vendor->max_bpw >= 32) > > - Re-written complete range check logic. > > Looks correct to me: > Acked-by: Linus Walleij Applied, thanks g. -- Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev___ spi-devel-general mailing list spi-devel-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spi-devel-general
Re: [PATCH V2] spi/pl022: Fix range checking for bits per word
Hi Vinit, Looks OK to me , On Tue, Apr 17, 2012 at 12:40 PM, Vinit Shenoy wrote: > pl022 ssp controller supports word lengths from 4 to 16 (or 32) bits. > Currently implemented checks were incorrect. It has following check > > if (pl022->vendor->max_bpw >= 32) > > which must be checking for <=. > > Also error print message is incorrect, that prints "range is from 1 to > 16". > > Fix both these issues. Thanks , > > Signed-off-by: Vinit Shenoy > --- > V1->V2: > - Fixed the check: > if (pl022->vendor->max_bpw >= 32) > - Re-written complete range check logic. I think the patches could be split as one is a fix the other corrects the error msg. Nit: Also the changlogs spell the issue and not the solution. I think that could be improved. Other than that feel free to add Reviewed-by: Shubhrajyoti D If you like. > > drivers/spi/spi-pl022.c | 25 + > 1 files changed, 9 insertions(+), 16 deletions(-) > > diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c > index 09c925a..1ead49d 100644 > --- a/drivers/spi/spi-pl022.c > +++ b/drivers/spi/spi-pl022.c > @@ -1823,9 +1823,12 @@ static int pl022_setup(struct spi_device *spi) > } else > chip->cs_control = chip_info->cs_control; > > - if (bits <= 3) { > - /* PL022 doesn't support less than 4-bits */ > + /* Check bits per word with vendor specific range */ > + if ((bits <= 3) || (bits > pl022->vendor->max_bpw)) { > status = -ENOTSUPP; > + dev_err(&spi->dev, "illegal data size for this > controller!\n"); > + dev_err(&spi->dev, "This controller can only handle 4 <= n <= > %d bit words\n", > + pl022->vendor->max_bpw); > goto err_config_params; > } else if (bits <= 8) { > dev_dbg(&spi->dev, "4 <= n <=8 bits per word\n"); > @@ -1838,20 +1841,10 @@ static int pl022_setup(struct spi_device *spi) > chip->read = READING_U16; > chip->write = WRITING_U16; > } else { > - if (pl022->vendor->max_bpw >= 32) { > - dev_dbg(&spi->dev, "17 <= n <= 32 bits per word\n"); > - chip->n_bytes = 4; > - chip->read = READING_U32; > - chip->write = WRITING_U32; > - } else { > - dev_err(&spi->dev, > - "illegal data size for this controller!\n"); > - dev_err(&spi->dev, > - "a standard pl022 can only handle " > - "1 <= n <= 16 bit words\n"); > - status = -ENOTSUPP; > - goto err_config_params; > - } > + dev_dbg(&spi->dev, "17 <= n <= 32 bits per word\n"); > + chip->n_bytes = 4; > + chip->read = READING_U32; > + chip->write = WRITING_U32; > } > > /* Now Initialize all register settings required for this chip */ > -- > 1.7.3.4 > -- Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev ___ spi-devel-general mailing list spi-devel-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spi-devel-general
Re: [PATCH V2] spi/pl022: Fix range checking for bits per word
On Tue, Apr 17, 2012 at 9:10 AM, Vinit Shenoy wrote: > pl022 ssp controller supports word lengths from 4 to 16 (or 32) bits. > Currently implemented checks were incorrect. It has following check > > if (pl022->vendor->max_bpw >= 32) > > which must be checking for <=. > > Also error print message is incorrect, that prints "range is from 1 to > 16". > > Fix both these issues. > > Signed-off-by: Vinit Shenoy > --- > V1->V2: > - Fixed the check: > if (pl022->vendor->max_bpw >= 32) > - Re-written complete range check logic. Looks correct to me: Acked-by: Linus Walleij Yours, Linus Walleij -- Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev ___ spi-devel-general mailing list spi-devel-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spi-devel-general
[PATCH V2] spi/pl022: Fix range checking for bits per word
pl022 ssp controller supports word lengths from 4 to 16 (or 32) bits. Currently implemented checks were incorrect. It has following check if (pl022->vendor->max_bpw >= 32) which must be checking for <=. Also error print message is incorrect, that prints "range is from 1 to 16". Fix both these issues. Signed-off-by: Vinit Shenoy --- V1->V2: - Fixed the check: if (pl022->vendor->max_bpw >= 32) - Re-written complete range check logic. drivers/spi/spi-pl022.c | 25 + 1 files changed, 9 insertions(+), 16 deletions(-) diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c index 09c925a..1ead49d 100644 --- a/drivers/spi/spi-pl022.c +++ b/drivers/spi/spi-pl022.c @@ -1823,9 +1823,12 @@ static int pl022_setup(struct spi_device *spi) } else chip->cs_control = chip_info->cs_control; - if (bits <= 3) { - /* PL022 doesn't support less than 4-bits */ + /* Check bits per word with vendor specific range */ + if ((bits <= 3) || (bits > pl022->vendor->max_bpw)) { status = -ENOTSUPP; + dev_err(&spi->dev, "illegal data size for this controller!\n"); + dev_err(&spi->dev, "This controller can only handle 4 <= n <= %d bit words\n", + pl022->vendor->max_bpw); goto err_config_params; } else if (bits <= 8) { dev_dbg(&spi->dev, "4 <= n <=8 bits per word\n"); @@ -1838,20 +1841,10 @@ static int pl022_setup(struct spi_device *spi) chip->read = READING_U16; chip->write = WRITING_U16; } else { - if (pl022->vendor->max_bpw >= 32) { - dev_dbg(&spi->dev, "17 <= n <= 32 bits per word\n"); - chip->n_bytes = 4; - chip->read = READING_U32; - chip->write = WRITING_U32; - } else { - dev_err(&spi->dev, - "illegal data size for this controller!\n"); - dev_err(&spi->dev, - "a standard pl022 can only handle " - "1 <= n <= 16 bit words\n"); - status = -ENOTSUPP; - goto err_config_params; - } + dev_dbg(&spi->dev, "17 <= n <= 32 bits per word\n"); + chip->n_bytes = 4; + chip->read = READING_U32; + chip->write = WRITING_U32; } /* Now Initialize all register settings required for this chip */ -- 1.7.3.4 -- Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev ___ spi-devel-general mailing list spi-devel-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spi-devel-general