[PATCH] drm/i915/intel_dsi: Add acpi_gpio_mapping for the panel-enable GPIO
Ville Syrjälä
ville.syrjala at linux.intel.com
Fri Jun 29 11:51:38 UTC 2018
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 at 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.
> +
> 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.
ccing Andy for a clue...
> intel_dsi->gpio_panel =
> gpiod_get(dev->dev, "panel", GPIOD_OUT_HIGH);
>
> --
> 2.17.1
--
Ville Syrjälä
Intel
More information about the dri-devel
mailing list