From: Hans de Goede <hdegoede@redhat.com>
To: "Ville Syrjälä" <ville.syrjala@linux.intel.com>,
"Hans de Goede" <j.w.r.degoede@gmail.com>
Cc: intel-gfx <intel-gfx@lists.freedesktop.org>,
dri-devel@lists.freedesktop.org,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: Re: [PATCH] drm/i915/intel_dsi: Add acpi_gpio_mapping for the panel-enable GPIO
Date: Fri, 29 Jun 2018 14:05:58 +0200 [thread overview]
Message-ID: <fc48785f-ccd5-a071-3376-2d25361a5189@redhat.com> (raw)
In-Reply-To: <20180629115138.GA5565@intel.com>
Hi,
On 29-06-18 13:51, Ville Syrjälä wrote:
> On Fri, Jun 29, 2018 at 01:32:58PM +0200, Hans de Goede wrote:
>> Add acpi_gpio_mapping for the panel-enable GPIO, this fixes the following
>> error: "Failed to own gpio for panel control" on BYT/CHT devices where
>> pwm_blc == PPS_BLC_PMIC.
>>
>> Note this patch is untested as I don't have hardware to test this,
>> but it should fix things.
>>
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>> drivers/gpu/drm/i915/intel_dsi.c | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
>> index 3b7acb5a70b3..b2b75ed3cbf9 100644
>> --- a/drivers/gpu/drm/i915/intel_dsi.c
>> +++ b/drivers/gpu/drm/i915/intel_dsi.c
>> @@ -29,6 +29,7 @@
>> #include <drm/drm_edid.h>
>> #include <drm/i915_drm.h>
>> #include <drm/drm_mipi_dsi.h>
>> +#include <linux/acpi.h>
>> #include <linux/slab.h>
>> #include <linux/gpio/consumer.h>
>> #include "i915_drv.h"
>> @@ -1713,6 +1714,13 @@ static void intel_dsi_add_properties(struct intel_connector *connector)
>> }
>> }
>>
>> +static const struct acpi_gpio_params panel_gpio = { 0, 0, false };
>> +
>> +static const struct acpi_gpio_mapping panel_gpios[] = {
>> + { "panel", &panel_gpio, 1 },
>> + { },
>> +};
>
> Named initializers please.
These structs are used in many other drivers without using named initializers
and using it with named-initializers will make the mapping table much harder
to read if there is more then 1 entry.
I don't believe named initializers are necessary / useful here, on the
contrary I believe them to be counter-productive in this case.
>> +
>> void intel_dsi_init(struct drm_i915_private *dev_priv)
>> {
>> struct drm_device *dev = &dev_priv->drm;
>> @@ -1811,6 +1819,7 @@ void intel_dsi_init(struct drm_i915_private *dev_priv)
>> */
>> if ((IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) &&
>> (dev_priv->vbt.dsi.config->pwm_blc == PPS_BLC_PMIC)) {
>> + devm_acpi_dev_add_driver_gpios(dev->dev, panel_gpios);
>
> Some explanation on what this actually does would be nice. There is no
> documentation that I can see so it's totally unclear why this is needed.
>
> Also IIRC this gpio comes straight from the pmic driver and not from
> acpi. So I don't really understand why acpi stuff must be involved here.
It has always come through ACPI, without adding code to manually search
for a GPIO chip (and using a different way to get the gpio_desc) all
GPIOs are always looked up through ACPI resource tables on x86.
Now it might point to a GPIO on the PMIC in some cases. But it does not
always point to the PMIC, e.g. here are the GFX0 resources from the
Microsoft Surface 3 (non pro version) :
Name (RBUF, ResourceTemplate ()
{
I2cSerialBus (0x002C, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C6",
0x00, ResourceConsumer, ,
)
GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOut
"\\_SB.GPO1", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x003F
}
})
Notice how it is using a GPIO on GPO1, so not on the PMIC.
As for why this is necessary ACPI based GPIO lookups so far where unique in
that they ignored the passed in name, relying on the index instead and in
the i915 code, since no index is passed in simply blindly taking the first GPIO
in the resources table.
While doing various cleanups to the ACPI GPIO code Andy introduced *mandatory*
GPIO mappings for ACPI to map resource indexes to names as used on other
platforms.
Regards,
Hans
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-06-29 12:06 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-29 11:32 [PATCH] drm/i915/intel_dsi: Add acpi_gpio_mapping for the panel-enable GPIO Hans de Goede
2018-06-29 11:51 ` Ville Syrjälä
2018-06-29 12:05 ` Hans de Goede [this message]
2018-06-29 12:10 ` Ville Syrjälä
2018-06-29 12:28 ` Hans de Goede
2018-06-29 16:12 ` Andy Shevchenko
2018-06-29 14:15 ` ✓ Fi.CI.BAT: success for " Patchwork
2018-06-29 15:40 ` ✓ Fi.CI.IGT: " Patchwork
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=fc48785f-ccd5-a071-3376-2d25361a5189@redhat.com \
--to=hdegoede@redhat.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=j.w.r.degoede@gmail.com \
--cc=rodrigo.vivi@intel.com \
--cc=ville.syrjala@linux.intel.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