Re: [PATCH v13 7/9] ACPI: Translate the I/O range of non-MMIO devices before scanning

From: Andy Shevchenko
Date: Wed Feb 14 2018 - 11:17:05 EST


On Wed, Feb 14, 2018 at 5:33 PM, John Garry <john.garry@xxxxxxxxxx> wrote:
> On 14/02/2018 13:53, Andy Shevchenko wrote:
>> On Tue, Feb 13, 2018 at 7:45 PM, John Garry <john.garry@xxxxxxxxxx> wrote:

>>> + sys_port = logic_pio_trans_hwaddr(&host->fwnode, res->start,
>>> len);
>>> + if (sys_port == -1UL)

>> Wouldn't it be better to compare with ULONG_MAX?

> Could do, being the same thing. Maybe people prefer -1UL as it saves having
> to figure out what ULONG_MAX is :)

-1UL looks confusing.

Another approach is to use ~0UL if that is preferable.

>>> + list_for_each_entry(rentry, &resource_list, node)
>>> + resources[count++] = *rentry->res;

>> It has similarities with acpi_create_platform_device().
>> I guess we can utilize existing code.

> For sure, this particular segment is effectively same as part of
> acpi_create_platform_device():

Not the same, acpi_create_platform_device() does a bit more than
copying the resources. If it indeed makes no hurt...

> list_for_each_entry(rentry, &resource_list, node)
> acpi_platform_fill_resource(adev, rentry->res,
> &resources[count++]);

> So is your idea to refactor this common segment into a helper function?

...I would go with helper.

>>> + char *name = &acpi_indirect_io_mfd_cell[count].name[0];
>>> + char *pnpid = &acpi_indirect_io_mfd_cell[count].pnpid[0];
>>
>>
>> Plain x is equivalent to &x[0].

> Right, but I thought for arrays that we should use address of x rather than
> x itself, no?

x is addressed by it's beginning.

--
With Best Regards,
Andy Shevchenko