Re: [PATCH 2/2] rtc: add hym8563 rtc-driver

Heiko Stübner
2013-11-25T23:40:17Z

Am Montag, 25. November 2013, 13:01:25 schrieb Mark Rutland:
> [...]
>
> > +static int hym8563_probe(struct i2c_client *client,
> > + const struct i2c_device_id *id)
> > +{
> > + struct hym8563 *hym8563;
> > + int ret, gpio_int;
> > +
> > + hym8563 = devm_kzalloc(&client->dev, sizeof(hym8563),
> > GFP_KERNEL); + if (!hym8563)
> > + return -ENOMEM;
> > +
> > + hym8563->client = client;
> > + i2c_set_clientdata(client, hym8563);
> > +
> > + device_set_wakeup_capable(&client->dev, true);
> > +
> > + gpio_int = of_get_gpio(client->dev.of_node, 0);
> > + if (!gpio_is_valid(gpio_int)) {
> > + dev_err(&client->dev, "failed to get interrupt gpio\n");
> > + return -EINVAL;
> > + }
> > +
> > + ret = devm_gpio_request_one(&client->dev, gpio_int,
> > + GPIOF_DIR_IN, "hym8563_int");
> > + if (ret) {
> > + dev_err(&client->dev, "request of gpio %d failed, %d\n",
> > + gpio_int, ret);
> > + return ret;
> > + }
>
> From here on the gpio is never used or even stashed away anywhere.
> What's the point in requesting it and then leaking it?

As I understand it, requesting gpio also is useful as a mechanism to mark them
as used and therefore prevent a gpio from wrongly being used multiple times.

So, I guess it would be better to either ignore client->irq and just use
gpio_to_irq or use client->irq alone, without the gpio-functions at all.

But what would be preferrable?