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.
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