Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2aeab688 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm/panel/for-4.2-rc1' of git://anongit.freedesktop.org/tegra/linux into drm-next

drm/panel: Changes for v4.2-rc1

This contains fixes for the long-standing build issues that some of the
bridge drivers were exposing. Other than that it's mostly cleanup and a
couple of new simple panels that are supported.

* tag 'drm/panel/for-4.2-rc1' of git://anongit.freedesktop.org/tegra/linux:
  drm/panel: simple: Add bus format for HannStar HSD100PXN1
  drm/panel: simple: Add display timing for HannStar HSD100PXN1
  drm/panel: ld9040: Remove useless padding
  drm/panel: Constify OF match tables
  drm/bridge: Remove stale ptn3460.h include
  drm/bridge: ps8622: Include linux/gpio/consumer.h
  drm/bridge: ptn3460: Include linux/gpio/consumer.h
  drm/bridge: dw-hdmi: Return number of EDID modes
  drm/panel: simple: Add support for LG LB070WV8 800x480 7" panel
  drm/bridge: ptn3460: Pass flags to devm_gpiod_get()
  drm/bridge: ps8622: Pass flags to devm_gpiod_get()
  drm/bridge: ptn3460: Fix I2C ID table to match the reported modalias
  drm/bridge: dw-hdmi: Staticize dw_hdmi_bridge_funcs
parents c861acc4 4946b043
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
HannStar Display Corp. HSD100PXN1 10.1" XGA LVDS panel

Required properties:
- compatible: should be "hannstar,hsd100pxn1"

This binding is compatible with the simple-panel binding, which is specified
in simple-panel.txt in this directory.
+7 −0
Original line number Diff line number Diff line
LG 7" (800x480 pixels) TFT LCD panel

Required properties:
- compatible: should be "lg,lb070wv8"

This binding is compatible with the simple-panel binding, which is specified
in simple-panel.txt in this directory.
+3 −3
Original line number Diff line number Diff line
@@ -1395,7 +1395,7 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
	struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
					     connector);
	struct edid *edid;
	int ret;
	int ret = 0;

	if (!hdmi->ddc)
		return 0;
@@ -1412,7 +1412,7 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
		dev_dbg(hdmi->dev, "failed to get edid\n");
	}

	return 0;
	return ret;
}

static enum drm_mode_status
@@ -1457,7 +1457,7 @@ static struct drm_connector_helper_funcs dw_hdmi_connector_helper_funcs = {
	.best_encoder = dw_hdmi_connector_best_encoder,
};

struct drm_bridge_funcs dw_hdmi_bridge_funcs = {
static struct drm_bridge_funcs dw_hdmi_bridge_funcs = {
	.enable = dw_hdmi_bridge_enable,
	.disable = dw_hdmi_bridge_disable,
	.pre_enable = dw_hdmi_bridge_nop,
+6 −15
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
#include <linux/err.h>
#include <linux/fb.h>
#include <linux/gpio.h>
#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/module.h>
#include <linux/of.h>
@@ -581,31 +582,21 @@ static int ps8622_probe(struct i2c_client *client,
		ps8622->v12 = NULL;
	}

	ps8622->gpio_slp = devm_gpiod_get(dev, "sleep");
	ps8622->gpio_slp = devm_gpiod_get(dev, "sleep", GPIOD_OUT_HIGH);
	if (IS_ERR(ps8622->gpio_slp)) {
		ret = PTR_ERR(ps8622->gpio_slp);
		dev_err(dev, "cannot get gpio_slp %d\n", ret);
		return ret;
	}
	ret = gpiod_direction_output(ps8622->gpio_slp, 1);
	if (ret) {
		dev_err(dev, "cannot configure gpio_slp\n");
		return ret;
	}

	ps8622->gpio_rst = devm_gpiod_get(dev, "reset");
	if (IS_ERR(ps8622->gpio_rst)) {
		ret = PTR_ERR(ps8622->gpio_rst);
		dev_err(dev, "cannot get gpio_rst %d\n", ret);
		return ret;
	}
	/*
	 * Assert the reset pin high to avoid the bridge being
	 * initialized prematurely
	 */
	ret = gpiod_direction_output(ps8622->gpio_rst, 1);
	if (ret) {
		dev_err(dev, "cannot configure gpio_rst\n");
	ps8622->gpio_rst = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
	if (IS_ERR(ps8622->gpio_rst)) {
		ret = PTR_ERR(ps8622->gpio_rst);
		dev_err(dev, "cannot get gpio_rst %d\n", ret);
		return ret;
	}

+9 −19
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@

#include <linux/delay.h>
#include <linux/gpio.h>
#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/module.h>
#include <linux/of.h>
@@ -23,8 +24,6 @@

#include <drm/drm_panel.h>

#include "bridge/ptn3460.h"

#include "drm_crtc.h"
#include "drm_crtc_helper.h"
#include "drm_edid.h"
@@ -330,32 +329,23 @@ static int ptn3460_probe(struct i2c_client *client,

	ptn_bridge->client = client;

	ptn_bridge->gpio_pd_n = devm_gpiod_get(&client->dev, "powerdown");
	ptn_bridge->gpio_pd_n = devm_gpiod_get(&client->dev, "powerdown",
					       GPIOD_OUT_HIGH);
	if (IS_ERR(ptn_bridge->gpio_pd_n)) {
		ret = PTR_ERR(ptn_bridge->gpio_pd_n);
		dev_err(dev, "cannot get gpio_pd_n %d\n", ret);
		return ret;
	}

	ret = gpiod_direction_output(ptn_bridge->gpio_pd_n, 1);
	if (ret) {
		DRM_ERROR("cannot configure gpio_pd_n\n");
		return ret;
	}

	ptn_bridge->gpio_rst_n = devm_gpiod_get(&client->dev, "reset");
	if (IS_ERR(ptn_bridge->gpio_rst_n)) {
		ret = PTR_ERR(ptn_bridge->gpio_rst_n);
		DRM_ERROR("cannot get gpio_rst_n %d\n", ret);
		return ret;
	}
	/*
	 * Request the reset pin low to avoid the bridge being
	 * initialized prematurely
	 */
	ret = gpiod_direction_output(ptn_bridge->gpio_rst_n, 0);
	if (ret) {
		DRM_ERROR("cannot configure gpio_rst_n\n");
	ptn_bridge->gpio_rst_n = devm_gpiod_get(&client->dev, "reset",
						GPIOD_OUT_LOW);
	if (IS_ERR(ptn_bridge->gpio_rst_n)) {
		ret = PTR_ERR(ptn_bridge->gpio_rst_n);
		DRM_ERROR("cannot get gpio_rst_n %d\n", ret);
		return ret;
	}

@@ -389,7 +379,7 @@ static int ptn3460_remove(struct i2c_client *client)
}

static const struct i2c_device_id ptn3460_i2c_table[] = {
	{"nxp,ptn3460", 0},
	{"ptn3460", 0},
	{},
};
MODULE_DEVICE_TABLE(i2c, ptn3460_i2c_table);
Loading