[PATCH] ns16550: switch to resource

Antony Pavlov antonynpavlov at gmail.com
Sat Jul 30 08:42:28 EDT 2011


On 30/07/2011, Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com> wrote:
> On 16:07 Sat 30 Jul     , Antony Pavlov wrote:
>> On 30/07/2011, Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
>> wrote:
>>
>> > +static uint32_t ns16550_read(struct console_device *cdev, uint32_t off)
>> > +{
>> > +	struct device_d *dev = cdev->dev;
>> > +	struct NS16550_plat *plat = (struct NS16550_plat *)dev->platform_data;
>> > +	int width = dev->resource[0].flags & IORESOURCE_MEM_TYPE_MASK;
>> > +	
>> > +	off <<= plat->shift;
>> > +
>> > +	if (plat->reg_read)
>> > +		return plat->reg_read((unsigned long)dev->priv, off);
>> >
>>
>> So, this code __always__ make swap before calling platform-dependent
>> reg_read (if any).
>> And platform-dependent reg_read must assume the presence of the shift.
>>
>> I propose this variant:
>> ---------------------------
>> if (plat->reg_read)
>> 	return plat->reg_read((unsigned long)dev->priv, off);
>>
>> off <<= plat->shift;
> the idea is avoid duplicated code in reg_read
>
> if you do not want the shift you let shift at 0

Yeah, but this code make shift __always__, for every device, even if
device need no shift.

There is another way to reduce duplication of code. I shell send the
patch latter.

-- 
Best regards,
  Antony Pavlov



More information about the barebox mailing list