Oskar Schirmer wrote on 2010-05-17: > On Sun, May 16, 2010 at 15:25:34 -0400, Mike Frysinger wrote: >> On Sat, May 15, 2010 at 14:15, Oskar Schirmer wrote: >>> On Thu, May 13, 2010 at 00:53:35 -0700, Dmitry Torokhov wrote: >>>> On Fri, May 07, 2010 at 02:23:07PM -0400, Mike Frysinger wrote: >>>>> On Fri, May 7, 2010 at 05:41, Daniel Glöckner wrote: >>>>>> On 05/06/2010 08:26 PM, Mike Frysinger wrote: >>>>>>> i think it'd be a better idea to do something like: >>>>>>> if (spi->bits_per_word != 16) { >>>>>>> if (spi->bits_per_word) { >>>>>>> dev_err(&spi->dev, "Invalid SPI settings; >>>>>>> bits_per_word must be 16\n"); >>>>>>> return -EINVAL; >>>>>>> } >>>>>>> spi->bits_per_word = 16; >>>>>>> spi_setup(spi); >>>>>>> } >>>>>> >>>>>> There is no way to set bits_per_word using struct spi_board_info. >>>>>> The description of that structure in spi.h explicitly lists the >>>>>> wordsize as one of the parameters drivers should set themself in >>>>>> probe(). >>>>>> >>>>>> Only struct bfin5xx_spi_chip allows to set this value in the > board code. >>>>> >>>>> an obvious shortcoming in the SPI framework that should be fixed, >>>>> but that doesnt make any difference to the above code now does it ? >>>>> it'll operate correctly regardless of the SPI bus master. >>>> >>>> So is the updated patch coming? >>> >>> The basic question I see is, whether it is in the responsibility >>> of >>> ad7877 to check a wrong setting possibly caused in board specific >>> code. If so, then the proposal by Mike should be used, but if not >>> so, it would introduce unneeded code. >>> >>> Remember: both versions end up in correctly setting bits_per_word, >>> with the difference merely in feedback level. >> >> imo, unsupported board settings should always be detected & rejected. >> all SPI master drivers do this (detect & reject unsupported SPI >> slave settings). > > please note, that bits_per_word is not a board setting, it's a demand > of the device. consequently, there is no one to set unsupported values > and thus none to be detected. > > the only architecture setting bits_per_word thru spi_chip is blackfin, > but I cannot see a good reason, why the board settings should engage > with a fixed demand of the device? > > Oskar 100% agreed. Two ways to address the issue: 1) Forcing spi->bits_per_word = 16 like this patch does. 2) Or going with the default 8-bit transfers and using be16_to_cpu(). Personally I prefer 1) unless someone tells me that not all SPI bus drivers support 16-bit transfers. Greetings, Michael Analog Devices GmbH Wilhelm-Wagenfeld-Str. 6 80807 Muenchen Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 4036 Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif ��.n��������+%������w��{.n�����{��)��^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�m