Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933498AbbFVM4U (ORCPT ); Mon, 22 Jun 2015 08:56:20 -0400 Received: from atrey.karlin.mff.cuni.cz ([195.113.26.193]:51058 "EHLO atrey.karlin.mff.cuni.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932470AbbFVM4M (ORCPT ); Mon, 22 Jun 2015 08:56:12 -0400 Date: Mon, 22 Jun 2015 14:56:08 +0200 From: Pavel Machek To: Anda-Maria Nicolae Cc: sre@kernel.org, dbaryshkov@gmail.com, robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com, ijc+devicetree@hellion.org.uk, galak@codeaurora.org, dwmw2@infradead.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: Re: [PATCH 2/2] power_supply: bq2415x_charger: Add ACPI support Message-ID: <20150622125607.GB26143@xo-6d-61-c0.localdomain> References: <1431421893-18816-1-git-send-email-anda-maria.nicolae@intel.com> <1431421893-18816-3-git-send-email-anda-maria.nicolae@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1431421893-18816-3-git-send-email-anda-maria.nicolae@intel.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5604 Lines: 166 On Tue 2015-05-12 12:11:33, Anda-Maria Nicolae wrote: > Replace of_property_read_u32() with device_property_read_u32(), which is a > wrapper over ACPI and device tree enumeration methods. > When ACPI enumeration is used, automode is not supported. Therefore, > bq2415x_charger does not update its input current automatically, depending > on the USB port type that is connected to. Input current may be updated via > sysfs. > > Signed-off-by: Anda-Maria Nicolae > --- > drivers/power/bq2415x_charger.c | 73 +++++++++++++++++++++++++++++---------- > 1 file changed, 55 insertions(+), 18 deletions(-) > > diff --git a/drivers/power/bq2415x_charger.c b/drivers/power/bq2415x_charger.c > index 2cf8ec7..e98dcb6 100644 > --- a/drivers/power/bq2415x_charger.c > +++ b/drivers/power/bq2415x_charger.c > @@ -35,6 +35,7 @@ > #include > #include > #include > +#include > > #include > > @@ -1530,13 +1531,14 @@ static int bq2415x_probe(struct i2c_client *client, > { > int ret; > int num; > - char *name; > + char *name = NULL; > struct bq2415x_device *bq; Why? > @@ -1547,7 +1549,14 @@ static int bq2415x_probe(struct i2c_client *client, > if (num < 0) > return num; > > - name = kasprintf(GFP_KERNEL, "%s-%d", id->name, num); > + if (id) { > + name = kasprintf(GFP_KERNEL, "%s-%d", id->name, num); > + } else if (ACPI_HANDLE(&client->dev)) { > + acpi_id = > + acpi_match_device(client->dev.driver->acpi_match_table, > + &client->dev); > + name = kasprintf(GFP_KERNEL, "%s-%d", acpi_id->id, num); > + } You have both branches covered. Pavel > if (!name) { > dev_err(&client->dev, "failed to allocate device name\n"); > ret = -ENOMEM; > @@ -1573,7 +1582,7 @@ static int bq2415x_probe(struct i2c_client *client, > ret = -EPROBE_DEFER; > goto error_2; > } > - } else if (pdata->notify_device) { > + } else if (pdata && pdata->notify_device) { > bq->notify_psy = power_supply_get_by_name(pdata->notify_device); > } else { > bq->notify_psy = NULL; > @@ -1583,36 +1592,45 @@ static int bq2415x_probe(struct i2c_client *client, > > bq->id = num; > bq->dev = &client->dev; > - bq->chip = id->driver_data; > + if (id) > + bq->chip = id->driver_data; > + else if (ACPI_HANDLE(bq->dev)) > + bq->chip = acpi_id->driver_data; > bq->name = name; > bq->mode = BQ2415X_MODE_OFF; > bq->reported_mode = BQ2415X_MODE_OFF; > bq->autotimer = 0; > bq->automode = 0; > > - if (np) { > - ret = of_property_read_u32(np, "ti,current-limit", > - &bq->init_data.current_limit); > + if (np || ACPI_HANDLE(bq->dev)) { > + ret = device_property_read_u32(bq->dev, > + "ti,current-limit", > + &bq->init_data.current_limit); > if (ret) > goto error_3; > - ret = of_property_read_u32(np, "ti,weak-battery-voltage", > - &bq->init_data.weak_battery_voltage); > + ret = device_property_read_u32(bq->dev, > + "ti,weak-battery-voltage", > + &bq->init_data.weak_battery_voltage); > if (ret) > goto error_3; > - ret = of_property_read_u32(np, "ti,battery-regulation-voltage", > + ret = device_property_read_u32(bq->dev, > + "ti,battery-regulation-voltage", > &bq->init_data.battery_regulation_voltage); > if (ret) > goto error_3; > - ret = of_property_read_u32(np, "ti,charge-current", > - &bq->init_data.charge_current); > + ret = device_property_read_u32(bq->dev, > + "ti,charge-current", > + &bq->init_data.charge_current); > if (ret) > goto error_3; > - ret = of_property_read_u32(np, "ti,termination-current", > - &bq->init_data.termination_current); > + ret = device_property_read_u32(bq->dev, > + "ti,termination-current", > + &bq->init_data.termination_current); > if (ret) > goto error_3; > - ret = of_property_read_u32(np, "ti,resistor-sense", > - &bq->init_data.resistor_sense); > + ret = device_property_read_u32(bq->dev, > + "ti,resistor-sense", > + &bq->init_data.resistor_sense); > if (ret) > goto error_3; > } else { > @@ -1728,9 +1746,28 @@ static const struct i2c_device_id bq2415x_i2c_id_table[] = { > }; > MODULE_DEVICE_TABLE(i2c, bq2415x_i2c_id_table); > > +static const struct acpi_device_id bq2415x_i2c_acpi_match[] = { > + { "BQ2415X", BQUNKNOWN }, > + { "BQ241500", BQ24150 }, > + { "BQA24150", BQ24150A }, > + { "BQ241510", BQ24151 }, > + { "BQA24151", BQ24151A }, > + { "BQ241520", BQ24152 }, > + { "BQ241530", BQ24153 }, > + { "BQA24153", BQ24153A }, > + { "BQ241550", BQ24155 }, > + { "BQ241560", BQ24156 }, > + { "BQA24156", BQ24156A }, > + { "BQS24157", BQ24157S }, > + { "BQ241580", BQ24158 }, > + {}, > +}; > +MODULE_DEVICE_TABLE(acpi, bq2415x_i2c_acpi_match); > + > static struct i2c_driver bq2415x_driver = { > .driver = { > .name = "bq2415x-charger", > + .acpi_match_table = ACPI_PTR(bq2415x_i2c_acpi_match), > }, > .probe = bq2415x_probe, > .remove = bq2415x_remove, > -- > 1.7.9.5 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in Please read the FAQ at http://www.tux.org/lkml/