From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Hans de Goede <hdegoede@redhat.com>
Cc: Wolfram Sang <wsa@the-dreams.de>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
Sebastian Reichel <sre@kernel.org>,
linux-acpi@vger.kernel.org, Takashi Iwai <tiwai@suse.de>,
linux-pm@vger.kernel.org
Subject: Re: [PATCH v3 3/4] i2c: core: Allow drivers to specify index for irq to get from of / ACPI
Date: Mon, 3 Apr 2017 11:29:47 -0700 [thread overview]
Message-ID: <20170403182947.GB34530@dtor-ws> (raw)
In-Reply-To: <7a315574-59e8-c182-ff69-07f8fdd60e7f@redhat.com>
On Sun, Apr 02, 2017 at 02:17:59PM +0200, Hans de Goede wrote:
> Hi,
>
> On 01-04-17 18:33, Dmitry Torokhov wrote:
> >On Fri, Mar 31, 2017 at 08:22:55PM +0200, Hans de Goede wrote:
> >>Hi,
> >>
> >>On 31-03-17 18:23, Wolfram Sang wrote:
> >>>
> >>>>Note I said "flag in i2c_driver" the idea is that the driver can tell
> >>>>the i2c_core that it is not going to use i2c_client->irq by
> >>>>setting i2c_driver->no_irq and that the i2c_core then will not bother
> >>>>with trying to get an irq in i2c_device_probe(), this is esp. useful
> >>>>for ACPI i2c instantiated devices where we otherwise might end up
> >>>>returning -EPROBE_DEFER (waiting for an irq to show up) without
> >>>>needing the irq, which is esp. troublesome when there is no driver
> >>>>for the irqchip the ACPI irq resource points to as then we end up
> >>>>waiting indefinitely.
> >>>
> >>>Okay, thanks. I understand the big picture. But does it really need to
> >>>be fixed in I2C core? Independent of I2C: if an irq is described in ACPI
> >>>and the driver for the needed irq controller is not available, that can
> >>>lead to various problems everywhere.
> >>
> >>Normally drivers call acpi_dev_gpio_irq_get themselves in their probe
> >>method and the -EPROBE_DEFER handling is done in the drivers probe
> >>itself, giving drivers various options to deal with irqs.
> >>
> >>The problem here is that the i2c system is somewhat special in that
> >>it does irq mapping on behalf of the driver and does not even bother
> >>to call the driver's probe() if the acpi_dev_gpio_irq_get() call
> >>returns -EPROBE_DEFER.
> >>
> >>>Or maybe you simply want to be early and don't want to get deferred? Are
> >>>we talking then about boot optimizations or necessities?
> >>
> >>The problem which I'm trying to fix is not having to write a (complex)
> >>gpio driver for an undocumented PMIC which I (and AFAICT no-one) needs (*)
> >>just because the i2c-core needs to be "special" and do the acpi_dev_gpio_irq_get
> >>for me even though in this specific driver I don't need the irq at index
> >>0 at all. IOW the problem which I'm trying to fix is to get i2c_device_probe
> >>to not out-smart me and never call my driver's probe method for
> >>invalid reasons.
> >
> >I wonder if, instead of adding flags to I2C core (which I think behaves
> >quite sanely), we could not have a "simple" GPIO stub driver for that
> >PMIC that just registers gpiochip and does nothing (until somebody finds
> >a use case and actually adds meat to it). This will stop
> >acpi_dev_gpio_irq_get() returning -EPROBE_DEFER and all will be well in
> >the kingdom.
>
> I'm afraid that that may cause problems when an i2c device shows up
> with a driver which actually does need a working irq, faking to have
> a working irq then will lead to lots of head scratching why the irq
> never triggers then.
I was talking about this particular PMIC that you do not want to write
full driver for, not doing this at i2c core level. If somebody does need
interrupt form that device, hey will have to write driver.
>
> And this is also useful in other scenarios, I agree that in many
> cases the i2c-core irq handling is useful, but in more complex cases
> not so much.
-PPROBE_DEFER is the only one case where driver does not get to run its
probe() method. In all other scenarios driver is free to ignore
client->irq and implement its own interrupt parsing and mapping.
Thanks.
--
Dmitry
next prev parent reply other threads:[~2017-04-03 18:29 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-25 13:55 [PATCH v3 0/4]: i2c-core improvements for complex ACPI-devices + cht-wc-fuel-gauge driver Hans de Goede
2017-03-25 13:55 ` [PATCH v3 1/4] i2c: core: Allow getting ACPI info by index Hans de Goede
2017-03-26 12:16 ` Andy Shevchenko
2017-03-25 13:55 ` [PATCH v3 2/4] i2c: core: Add new i2c_acpi_new_device helper function Hans de Goede
2017-03-25 13:55 ` [PATCH v3 3/4] i2c: core: Allow drivers to specify index for irq to get from of / ACPI Hans de Goede
2017-03-26 12:15 ` Andy Shevchenko
2017-03-26 15:07 ` Hans de Goede
2017-03-30 17:39 ` Hans de Goede
2017-03-30 20:39 ` Wolfram Sang
2017-03-31 10:03 ` Hans de Goede
2017-03-31 16:23 ` Wolfram Sang
2017-03-31 18:22 ` Hans de Goede
2017-03-31 19:54 ` Wolfram Sang
2017-03-31 20:13 ` Andy Shevchenko
2017-03-31 20:59 ` Hans de Goede
2017-03-31 21:19 ` Wolfram Sang
2017-04-01 16:33 ` Dmitry Torokhov
2017-04-02 12:17 ` Hans de Goede
2017-04-03 18:29 ` Dmitry Torokhov [this message]
2017-03-25 13:55 ` [PATCH v3 4/4] power: supply: Add driver for Cherry Trail Whiskey Cove PMIC Fuel Gauge Hans de Goede
2017-03-25 18:42 ` Sebastian Reichel
2017-03-26 8:56 ` Hans de Goede
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170403182947.GB34530@dtor-ws \
--to=dmitry.torokhov@gmail.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=hdegoede@redhat.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mika.westerberg@linux.intel.com \
--cc=sre@kernel.org \
--cc=tiwai@suse.de \
--cc=wsa@the-dreams.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).