[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