From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jonathan Cameron Subject: Re: [Patch v1 2/2] iio: ak8975: Added ACPI enumeration Date: Sat, 22 Mar 2014 12:46:17 +0000 Message-ID: <532D8619.2060409@kernel.org> References: <1395248167-16991-1-git-send-email-srinivas.pandruvada@linux.intel.com> <1395248167-16991-2-git-send-email-srinivas.pandruvada@linux.intel.com> <532D8571.4040004@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <532D8571.4040004-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Sender: linux-iio-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Srinivas Pandruvada Cc: linux-iio-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-acpi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-acpi@vger.kernel.org On 22/03/14 12:43, Jonathan Cameron wrote: > On 19/03/14 16:56, Srinivas Pandruvada wrote: >> Added capability so that this device can be enumerated via ACPI. >> > This is simple enough that I'm going to rely on my limited knowledge of ACPI and > take it as is. >> Signed-off-by: Srinivas Pandruvada > Applied to the togreg branch of iio.git Note there was a bit of fuzz in here. All looks fine, but might be worth you taking a quick look at the merge. > > Thanks, > > Jonathan >> --- >> drivers/iio/magnetometer/ak8975.c | 40 ++++++++++++++++++++++++++++++++++++--- >> 1 file changed, 37 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c >> index aa7682d..09ea5c4 100644 >> --- a/drivers/iio/magnetometer/ak8975.c >> +++ b/drivers/iio/magnetometer/ak8975.c >> @@ -31,6 +31,7 @@ >> #include >> #include >> #include >> +#include >> >> #include >> #include >> @@ -475,6 +476,27 @@ static const struct iio_info ak8975_info = { >> .driver_module = THIS_MODULE, >> }; >> >> +static const struct acpi_device_id ak_acpi_match[] = { >> + {"AK8975", AK8975}, >> + {"AK8963", AK8963}, >> + {"INVN6500", AK8963}, >> + { }, >> +}; >> +MODULE_DEVICE_TABLE(acpi, ak_acpi_match); >> + >> +static char *ak8975_match_acpi_device(struct device *dev, >> + enum asahi_compass_chipset *chipset) >> +{ >> + const struct acpi_device_id *id; >> + >> + id = acpi_match_device(dev->driver->acpi_match_table, dev); >> + if (!id) >> + return NULL; >> + *chipset = (int)id->driver_data; >> + >> + return (char *)dev_name(dev); >> +} >> + >> static int ak8975_probe(struct i2c_client *client, >> const struct i2c_device_id *id) >> { >> @@ -482,6 +504,7 @@ static int ak8975_probe(struct i2c_client *client, >> struct iio_dev *indio_dev; >> int eoc_gpio; >> int err; >> + char *name = NULL; >> >> /* Grab and set up the supplied GPIO. */ >> if (client->dev.platform_data) >> @@ -519,8 +542,18 @@ static int ak8975_probe(struct i2c_client *client, >> data->eoc_gpio = eoc_gpio; >> data->eoc_irq = 0; >> >> - data->chipset = (enum asahi_compass_chipset)(id->driver_data); >> - dev_dbg(&client->dev, "Asahi compass chip %s\n", id->name); >> + /* id will be NULL when enumerated via ACPI */ >> + if (id) { >> + data->chipset = >> + (enum asahi_compass_chipset)(id->driver_data); >> + name = (char *) id->name; >> + } else if (ACPI_HANDLE(&client->dev)) >> + name = ak8975_match_acpi_device(&client->dev, &data->chipset); >> + else { >> + err = -ENOSYS; >> + goto exit_free_iio; >> + } >> + dev_dbg(&client->dev, "Asahi compass chip %s\n", name); >> >> /* Perform some basic start-of-day setup of the device. */ >> err = ak8975_setup(client); >> @@ -537,7 +570,7 @@ static int ak8975_probe(struct i2c_client *client, >> indio_dev->num_channels = ARRAY_SIZE(ak8975_channels); >> indio_dev->info = &ak8975_info; >> indio_dev->modes = INDIO_DIRECT_MODE; >> - >> + indio_dev->name = name; >> err = iio_device_register(indio_dev); >> if (err < 0) >> goto exit_free_iio; >> @@ -592,6 +625,7 @@ static struct i2c_driver ak8975_driver = { >> .driver = { >> .name = "ak8975", >> .of_match_table = ak8975_of_match, >> + .acpi_match_table = ACPI_PTR(ak_acpi_match), >> }, >> .probe = ak8975_probe, >> .remove = ak8975_remove, >> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-iio" in > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > More majordomo info at http://vger.kernel.org/majordomo-info.html