[PATCH] spi/pl022: compare bitwidth to enums

Linus Walleij linus.ml.walleij at gmail.com
Thu Sep 30 07:34:17 EDT 2010


2010/9/30 Linus Walleij <linus.walleij at stericsson.com>:

> The enums from <linux/amba/pl022.h> are actually off-by-one
> since bitwidth 4 is defined as 0x03, causing weirdness when
> we were trying out some 9-bit peripheral. Fix this by
> comparing to the enum values rather than hardcoded values
> and also fixing the enum to something reasonable.
>
> Signed-off-by: Linus Walleij <linus.walleij at stericsson.com>
> (...)
> -       if (chip_info->data_size <= 8) {
> +       if (chip_info->data_size <= SSP_DATA_BITS_8) {
>                dev_dbg(&spi->dev, "1 <= n <=8 bits per word\n");
>                chip->n_bytes = 1;
>                chip->read = READING_U8;
>                chip->write = WRITING_U8;
> -       } else if (chip_info->data_size <= 16) {
> +       } else if (chip_info->data_size <= SSP_DATA_BITS_16) {

I just realized that Kevin Wells patch actually patch away this problem
so merge his patch and disregard this for the optimal solution.

>  enum ssp_data_size {
> -       SSP_DATA_BITS_4 = 0x03, SSP_DATA_BITS_5, SSP_DATA_BITS_6,
> +       SSP_DATA_BITS_4 = 0x04, SSP_DATA_BITS_5, SSP_DATA_BITS_6,

This is not good because this is used for default register
settings too (I didn't notice, typical).

If anyone still wants a patch for older kernels I can provide a
patch against 2.6.36-rc6 with just the first two hunks.

Yours,
Linus Walleij



More information about the linux-arm-kernel mailing list