Re: [PATCH 07/07] ONKEY: OnKey module for DA9052/53 PMIC v1

Ashish Jangam
2012-02-01T08:35:06Z

On Wed, 2012-02-01 at 13:30 +0530, Ashish Jangam wrote:
> On Tue, Jan 17, 2012 at 06:59:11PM +0530, Ashish Jangam wrote:
>
> > + ret = da9052_reg_read(onkey->da9052, DA9052_EVENT_B_REG);
> > + if (ret < 0) {
> > + dev_err(onkey->da9052->dev,
> > + "da9052_onkey_report_event da9052_reg_read error %d\n",
> > + ret);
> > + ret = 1;
> > + } else {
> > + ret = ret & DA9052_EVENTB_ENONKEY;
> > + input_report_key(onkey->input, KEY_POWER, ret);
> > + input_sync(onkey->input);
> > + }
> > +
> > + if (ret)
> > + schedule_delayed_work(&onkey->work, msecs_to_jiffies(50));
>
> Why not just schedule the work directly? The use of ret took a bit of
> thinking about to follow.
schedule_dealyed_work simulates the release of the onkey button since event for release
is not generated and ret & DA9052_EVENTB_ENONKEY is used to determine the release
of the onkey button.
> > + error = request_threaded_irq(onkey->da9052->irq_base + onkey->irq, NULL,
> > + da9052_onkey_irq,
>
> This looks buggy, the resource should have the IRQ you need directly in
> it. The MFD core can do this for the chip core driver when it registers
> children.
>
As irq_base may get determined at runtime this will require modification to the
defined resource struct for each mfd child in the device init function of the mfd core.
Not sure if this is fine.