public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Hans de Goede <hdegoede@redhat.com>,
	Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: linux-pwm@vger.kernel.org,
	intel-gfx <intel-gfx@lists.freedesktop.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: Re: [PATCH v2] pwm: lpss: Make builtin so that i915 can find the pwm_backlight
Date: Wed, 08 Mar 2017 12:15:16 +0200	[thread overview]
Message-ID: <87shmohy6j.fsf@intel.com> (raw)
In-Reply-To: <2fe8a18f-260a-c035-5424-e28bd0bd5c16@redhat.com>

On Wed, 08 Mar 2017, Hans de Goede <hdegoede@redhat.com> wrote:
> Hi,
>
> On 08-03-17 10:40, Jani Nikula wrote:
>> On Fri, 20 Jan 2017, Mika Westerberg <mika.westerberg@linux.intel.com> wrote:
>>> On Fri, Jan 20, 2017 at 10:02:50AM +0200, Jani Nikula wrote:
>>>> That said, I suppose there could be an alternative to handling pwm_get()
>>>> failures at probe. We could just go on with our init, but schedule a
>>>> retry later. Perhaps a bit hacky, but it would address both of the
>>>> concerns above. Again, this patch seems a simple workaround in the mean
>>>> time.
>>>
>>> Not sure if this works or how hacky it is, but can't you
>>> request_module() before you start looking up for the pwm?
>>
>> I eyeballed this a little, and noticed:
>>
>> drivers/acpi/acpi_lpss.c:
>>
>> static struct pwm_lookup bsw_pwm_lookup[] = {
>> 	PWM_LOOKUP_WITH_MODULE("80862288:00", 0, "0000:00:02.0",
>> 			       "pwm_backlight", 0, PWM_POLARITY_NORMAL,
>> 			       "pwm-lpss-platform"),
>> };
>>
>> drivers/mfd/intel_soc_pmic_core.c:
>>
>> static struct pwm_lookup crc_pwm_lookup[] = {
>> 	PWM_LOOKUP("crystal_cove_pwm", 0, "0000:00:02.0", "pwm_backlight", 0, PWM_POLARITY_NORMAL),
>> };
>>
>> Should crc_pwm_lookup also use PWM_LOOKUP_WITH_MODULE? And which module
>> exactly? pwm_get() does an automatic request_module(), if the module is
>> given.
>>
>> And will this still be enough?
>
> I was thinking about this a couple of days ago, unfortunately the
> situation with pwm_crc is more complicated as that is part of
> an i2c mfd device, so both the i2c-adapter driver and the mfd driver
> (intel_soc_pmic_crc) need to be builtin currently the mfd driver
> cannot be modular, but the i2c-adapter driver can (and on most
> Linux distribution kernels is) configured to be modular.
>
> So just doing request module for pwm-crc is not going to help
> since the i2c-adapter driver may not yet have loaded / initialized.
>
> All in all we really need to find a way to figure out if we will need
> to do a pwm_get earlier on during i915 initialization (by moving the
> VBT parsing to earlier, or at least part of it) and do the pwm_get
> before we do anything i-reversible and if it fails then return
> -EPROBE_DEFER. Then we can make pwm_crc modular as well as all of
> intel_soc_pmic* as it really should be.

The other alternatives are:

1) Handle defers using a workqueue within i915. It's a bit tedious, but
I didn't spot any show stoppers with the approach. We'd register a
non-functional backlight interface until the pwm_get() succeeds.

2) Rip out pwm backlight from i915 altogether, and turn it into a
separate platform backlight that uses pwm. I think there's ready
infrastructure for that. It's not without problems, though, as then we
lose control over the sequence in which backlight gets enabled/disabled.

BR,
Jani.

>
> Regards,
>
> Hans

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2017-03-08 10:15 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-19 17:58 [PATCH v2] pwm: lpss: Make builtin so that i915 can find the pwm_backlight Hans de Goede
2017-01-20  7:03 ` Thierry Reding
2017-01-20  7:18   ` Thierry Reding
2017-01-20  7:50     ` Hans de Goede
2017-01-20  8:02   ` Jani Nikula
2017-01-20  8:56     ` Thierry Reding
2017-01-20  9:48       ` Hans de Goede
2017-01-20  9:55         ` Andy Shevchenko
2017-01-20 10:18           ` Hans de Goede
2017-01-20 10:42             ` Thierry Reding
2017-01-22 16:21               ` Hans de Goede
2017-01-20  9:58         ` Thierry Reding
2017-01-20  9:55     ` Mika Westerberg
2017-03-08  9:40       ` Jani Nikula
2017-03-08  9:48         ` Hans de Goede
2017-03-08 10:15           ` Jani Nikula [this message]
2017-03-08 13:41             ` 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=87shmohy6j.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=hdegoede@redhat.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=thierry.reding@gmail.com \
    /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