On 16/06/11 18:15, Wolfgang Denk wrote:
> Dear Graeme Russ,
> 
> In message <banlktik3cxemzu0qpxdlsqmtk-abeod...@mail.gmail.com> you wrote:
>>
>> Now, that being said, I see no reason not to do the following if I had,
>> for example, multiple serial port configuration registers which are all
>> identical:
>>
>> /* num data bits is stored in bits 2-4 of the serial config register */
>> #define DATA_BITS_MASK               0x001c
>> #define DATA_BITS_OFFSET     2
>>
>> u32 set_serial_data_bits(u32 ser_cfg, u8 data_bits)
>> {
>>      ser_cfg &= ~DATA_BITS_MASK;
>>      ser_cfg |= ((u32)ser_cfg << DATA_BITS_OFFSET) &  DATA_BITS_MASK;
>>
>>      return ser_cfg;
>> }
>>
>> void serial_init(void)
>> {
>>      u32 ser_cfg;
>>
>>      for (i=0; i<NUM_SERIAL_PORTS; i++) {
>>              ser_cfg = read_serial_cfg(i);
>>              ser_cfg = set_serial_data_bits(ser_cfg, 7);
>>              write_serial_cfg(i, ser_cfg);
>>      }
>> }
> 
> One reason for not doing this is that we should not reinvent the wheel
> again and again, and instead use standard APIs.
> 
> I cannot find any such code in U-Boot, so I cannot check, but to me it
> smells a lot as if this code should rather use clrsetbits_*() and
> other proper I/O accessors.

Except nobody outside ARM and PPC knows about clrsetbits and friends, so I
would not call them a standard API

I will, however, keep them in mind and implement them for x86 when I have a
need for bit-field operations

Regards,

Graeme
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to