Re: [PATCHv3 3/5] Input: EXC3000: add EXC80H60 and EXC80H84 support

From: Sebastian Reichel
Date: Wed May 20 2020 - 17:20:09 EST


Hi,

On Wed, May 20, 2020 at 10:45:19AM -0700, Dmitry Torokhov wrote:
> Hi Sebastian,
>
> On Wed, May 20, 2020 at 05:39:34PM +0200, Sebastian Reichel wrote:
> >
> > data->client = client;
> > + data->info = device_get_match_data(&client->dev);

The above is for DT (and ACPI, but driver has no ACPI table).

> > + if (!data->info) {
> > + enum eeti_dev_id eeti_dev_id =
> > + i2c_match_id(exc3000_id, client)->driver_data;
>
> I believe i2c devices can be instantiated via sysfs, so I think we
> better handle case where we can't find matching id. Also driver_data is
> enough to store a pointer, maybe we can have individual structures
> instead of using an array and indexing here?

The above code is only for exactly this usecase (loading via sysfs).
There is zero chance, that we cannot find matching id. The sysfs
based probing works by providing the device address and the name
listed in driver's id_table. I took the above code style from
drivers/i2c/muxes/i2c-mux-ltc4306.c.

We can store the pointer directly in i2c_device_id's driver_data
field, but that requires two type casts (field is ulong instead
of pointer). The array variant feels a bit cleaner to me.

-- Sebastian

Attachment: signature.asc
Description: PGP signature