devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties
@ 2015-10-16 12:15 CK Hu
  2015-10-16 12:15 ` [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge CK Hu
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: CK Hu @ 2015-10-16 12:15 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	David Airlie, Matthias Brugger
  Cc: Jitao Shi, Thierry Reding, Ajay Kumar, Inki Dae, Rahul Sharma,
	Sean Paul, Vincent Palatin, Andy Yan, Philipp Zabel, Russell King,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	srv_heupstream-NuS5LvNUpcJWk0Htik3J/w, Sascha Hauer,
	yingjoe.chen-NuS5LvNUpcJWk0Htik3J/w,
	eddie.huang-NuS5LvNUpcJWk0Htik3J/w,
	cawa.cheng-NuS5LvNUpcJWk0Htik3J/w

From: Jitao Shi <jitao.shi-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>

Add documentation for DT properties supported by ps8640
DSI-eDP converter.

Signed-off-by: Jitao Shi <jitao.shi-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
---
 .../devicetree/bindings/video/bridge/ps8640.txt    |   48 ++++++++++++++++++++
 1 file changed, 48 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/video/bridge/ps8640.txt

diff --git a/Documentation/devicetree/bindings/video/bridge/ps8640.txt b/Documentation/devicetree/bindings/video/bridge/ps8640.txt
new file mode 100644
index 0000000..450b5df
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/bridge/ps8640.txt
@@ -0,0 +1,48 @@
+ps8640-bridge bindings
+
+Required properties:
+	- compatible: "parade,ps8640"
+	- reg: first i2c address of the bridge
+	- power-gpios: OF device-tree gpio specification for power pin.
+	- reset-gpios: OF device-tree gpio specification for reset pin.
+	- mode-sel-gpios: OF device-tree gpio specification for mode-sel pin.
+	- ps8640-1v2-supply: OF device-tree regulator specification for 1v2.
+	- ps8640-3v3-supply: OF device-tree regulator specification for 3v3.
+
+Optional properties:
+	- video interfaces: Device node can contain video interface port
+			    nodes for panel according to [1].
+
+[1]: Documentation/devicetree/bindings/media/video-interfaces.txt
+
+Example:
+	edp-bridge@18 {
+		compatible = "parade,ps8640";
+		reg = <0x18>;
+		power-gpios = <&pio 116 GPIO_ACTIVE_HIGH>;
+		reset-gpios = <&pio 115 GPIO_ACTIVE_HIGH>;
+		mode-sel-gpios = <&pio 92 GPIO_ACTIVE_HIGH>;
+		ps8640-1v2-supply = <&ps8640_fixed_1v2>;
+		ps8640-3v3-supply = <&mt6397_vgp2_reg>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+
+				ps8640_in: endpoint {
+					remote-endpoint = <&dsi0_out>;
+				};
+			};
+
+			port@1 {
+				reg = <1>;
+
+				ps8640_out: endpoint {
+					remote-endpoint = <&panel_in>;
+				};
+			};
+		};
+	};
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge
  2015-10-16 12:15 [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties CK Hu
@ 2015-10-16 12:15 ` CK Hu
  2015-10-16 13:06   ` Mark Rutland
                     ` (2 more replies)
  2015-10-16 13:04 ` [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties Mark Rutland
                   ` (2 subsequent siblings)
  3 siblings, 3 replies; 12+ messages in thread
From: CK Hu @ 2015-10-16 12:15 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	David Airlie, Matthias Brugger
  Cc: Jitao Shi, Thierry Reding, Ajay Kumar, Inki Dae, Rahul Sharma,
	Sean Paul, Vincent Palatin, Andy Yan, Philipp Zabel, Russell King,
	devicetree, linux-kernel, dri-devel, linux-arm-kernel,
	linux-mediatek, srv_heupstream, Sascha Hauer, yingjoe.chen,
	eddie.huang, cawa.cheng

From: Jitao Shi <jitao.shi@mediatek.com>

This patch adds drm_bridge driver for parade DSI
to eDP bridge chip.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
---
 drivers/gpu/drm/bridge/Kconfig         |    9 +
 drivers/gpu/drm/bridge/Makefile        |    1 +
 drivers/gpu/drm/bridge/parade-ps8640.c |  489 ++++++++++++++++++++++++++++++++
 3 files changed, 499 insertions(+)
 create mode 100644 drivers/gpu/drm/bridge/parade-ps8640.c

diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
index 2de52a5..8ecaeed 100644
--- a/drivers/gpu/drm/bridge/Kconfig
+++ b/drivers/gpu/drm/bridge/Kconfig
@@ -29,4 +29,13 @@ config DRM_PARADE_PS8622
 	---help---
 	  Parade eDP-LVDS bridge chip driver.
 
+config DRM_PARADE_PS8640
+	bool "Parade PS8640 MIPI DSI to eDP Converter"
+	select DRM_KMS_HELPER
+	select DRM_PANEL
+	---help---
+	  Choose this option if you have PS8640 for display
+	  The PS8640 is a high-performance and low-power
+	  MIPI DSI to eDP converter
+
 endmenu
diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile
index e2eef1c..da9e4a4 100644
--- a/drivers/gpu/drm/bridge/Makefile
+++ b/drivers/gpu/drm/bridge/Makefile
@@ -3,3 +3,4 @@ ccflags-y := -Iinclude/drm
 obj-$(CONFIG_DRM_DW_HDMI) += dw_hdmi.o
 obj-$(CONFIG_DRM_NXP_PTN3460) += nxp-ptn3460.o
 obj-$(CONFIG_DRM_PARADE_PS8622) += parade-ps8622.o
+obj-$(CONFIG_DRM_PARADE_PS8640) += parade-ps8640.o
diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c
new file mode 100644
index 0000000..dc62dd7
--- /dev/null
+++ b/drivers/gpu/drm/bridge/parade-ps8640.c
@@ -0,0 +1,489 @@
+/*
+ * Copyright (c) 2014 MediaTek Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_gpio.h>
+#include <linux/i2c.h>
+#include <linux/gpio.h>
+#include <linux/delay.h>
+#include <linux/of_graph.h>
+#include <linux/regulator/consumer.h>
+
+#include <drm/drmP.h>
+#include <drm/drm_crtc_helper.h>
+#include <drm/drm_crtc.h>
+#include <drm/drm_mipi_dsi.h>
+#include <drm/drm_panel.h>
+#include <drm/drm_atomic_helper.h>
+#include <drm/drm_edid.h>
+
+#define PAGE2_GPIO_L	0xa6
+#define PAGE2_GPIO_H	0xa7
+#define PS_GPIO9	BIT(1)
+
+#define PAGE4_REV_L	0xf0
+#define PAGE4_REV_H	0xf1
+#define PAGE4_CHIP_L	0xf2
+#define PAGE4_CHIP_H	0xf3
+
+#define bridge_to_ps8640(e)	container_of(e, struct ps8640, bridge)
+#define connector_to_ps8640(e)	container_of(e, struct ps8640, connector)
+
+struct ps8640 {
+	struct drm_connector connector;
+	struct drm_bridge bridge;
+	struct i2c_client *client;
+	struct ps8640_driver_data *driver_data;
+	struct regulator *pwr_1v2_supply;
+	struct regulator *pwr_3v3_supply;
+	struct drm_panel *panel;
+	struct gpio_desc *gpio_rst_n;
+	struct gpio_desc *gpio_pwr_n;
+	struct gpio_desc *gpio_mode_sel_n;
+	void *edid;
+	u16 base_reg;
+	bool enabled;
+};
+
+static int ps8640_regr(struct i2c_client *client, u16 i2c_addr,
+		       u8 reg, u8 *value)
+{
+	int ret;
+
+	client->addr = i2c_addr;
+
+	ret = i2c_master_send(client, &reg, 1);
+	if (ret <= 0) {
+		DRM_ERROR("Failed to send i2c command, ret=%d\n", ret);
+		return ret;
+	}
+
+	ret = i2c_master_recv(client, value, 1);
+	if (ret <= 0) {
+		DRM_ERROR("Failed to recv i2c data, ret=%d\n", ret);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int ps8640_regw(struct i2c_client *client, u16 i2c_addr,
+		       u8 reg, u8 value)
+{
+	int ret;
+	char buf[2];
+
+	client->addr = i2c_addr;
+
+	buf[0] = reg;
+	buf[1] = value;
+	ret = i2c_master_send(client, buf, ARRAY_SIZE(buf));
+	if (ret <= 0) {
+		DRM_ERROR("Failed to send i2c command, ret=%d\n", ret);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int ps8640_check_valid_id(struct ps8640 *ps_bridge)
+{
+	struct i2c_client *client = ps_bridge->client;
+	u8 rev_id_low, rev_id_high, chip_id_low, chip_id_high;
+	int retry_cnt = 0;
+
+	do {
+		ps8640_regr(client, ps_bridge->base_reg + 4, PAGE4_CHIP_H,
+			    &chip_id_high);
+		if (chip_id_high != 0x30)
+			DRM_INFO("chip_id_high = 0x%x\n", chip_id_high);
+	} while ((retry_cnt++ < 2) && (chip_id_high != 0x30));
+
+	ps8640_regr(client, ps_bridge->base_reg + 4, PAGE4_REV_L, &rev_id_low);
+	ps8640_regr(client, ps_bridge->base_reg + 4, PAGE4_REV_H, &rev_id_high);
+	ps8640_regr(client, ps_bridge->base_reg + 4, PAGE4_CHIP_L,
+		    &chip_id_low);
+
+	if ((rev_id_low == 0x00) && (rev_id_high == 0x0a) &&
+	    (chip_id_low == 0x00) && (chip_id_high == 0x30))
+		return 1;
+
+	return 0;
+}
+
+static void ps8640_show_mcu_fw_version(struct ps8640 *ps_bridge)
+{
+	struct i2c_client *client = ps_bridge->client;
+	u8 major_ver, minor_ver;
+
+	ps8640_regr(client, ps_bridge->base_reg + 5, 0x4, &major_ver);
+	ps8640_regr(client, ps_bridge->base_reg + 5, 0x5, &minor_ver);
+
+	DRM_INFO_ONCE("ps8640 rom fw version %d.%d\n", major_ver, minor_ver);
+}
+
+static int ps8640_bdg_enable(struct ps8640 *ps_bridge)
+{
+	struct i2c_client *client = ps_bridge->client;
+
+	if (ps8640_check_valid_id(ps_bridge)) {
+		ps8640_regw(client, ps_bridge->base_reg + 3, 0xfe, 0x13);
+		ps8640_regw(client, ps_bridge->base_reg + 3, 0xff, 0x18);
+		ps8640_regw(client, ps_bridge->base_reg + 3, 0xfe, 0x13);
+		ps8640_regw(client, ps_bridge->base_reg + 3, 0xff, 0x1c);
+
+		return 0;
+	}
+
+	return -1;
+}
+
+static void ps8640_prepare(struct ps8640 *ps_bridge)
+{
+	struct i2c_client *client = ps_bridge->client;
+	int err, retry_cnt = 0;
+	u8 set_vdo_done;
+
+	if (ps_bridge->enabled)
+		return;
+
+	if (drm_panel_prepare(ps_bridge->panel)) {
+		DRM_ERROR("failed to prepare panel\n");
+		return;
+	}
+
+	err = regulator_enable(ps_bridge->pwr_1v2_supply);
+	if (err < 0) {
+		DRM_ERROR("failed to enable pwr_1v2_supply: %d\n", err);
+		return;
+	}
+
+	err = regulator_enable(ps_bridge->pwr_3v3_supply);
+	if (err < 0) {
+		DRM_ERROR("failed to enable pwr_3v3_supply: %d\n", err);
+		return;
+	}
+
+	gpiod_set_value(ps_bridge->gpio_pwr_n, 1);
+	gpiod_set_value(ps_bridge->gpio_rst_n, 0);
+	usleep_range(500, 700);
+	gpiod_set_value(ps_bridge->gpio_rst_n, 1);
+
+	do {
+		msleep(50);
+		ps8640_regr(client, ps_bridge->base_reg + 2, PAGE2_GPIO_H,
+			    &set_vdo_done);
+	} while ((retry_cnt++ < 70) && ((set_vdo_done & PS_GPIO9) != PS_GPIO9));
+
+	ps8640_show_mcu_fw_version(ps_bridge);
+	ps_bridge->enabled = true;
+}
+
+static void ps8640_pre_enable(struct drm_bridge *bridge)
+{
+	struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
+
+	ps8640_prepare(ps_bridge);
+}
+
+static void ps8640_enable(struct drm_bridge *bridge)
+{
+	struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
+
+	ps8640_bdg_enable(ps_bridge);
+
+	if (drm_panel_enable(ps_bridge->panel)) {
+		DRM_ERROR("failed to enable panel\n");
+		return;
+	}
+}
+
+static void ps8640_disable(struct drm_bridge *bridge)
+{
+	struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
+
+	if (!ps_bridge->enabled)
+		return;
+
+	ps_bridge->enabled = false;
+
+	if (drm_panel_disable(ps_bridge->panel)) {
+		DRM_ERROR("failed to disable panel\n");
+		return;
+	}
+
+	regulator_disable(ps_bridge->pwr_1v2_supply);
+	regulator_disable(ps_bridge->pwr_3v3_supply);
+	gpiod_set_value(ps_bridge->gpio_rst_n, 0);
+	gpiod_set_value(ps_bridge->gpio_pwr_n, 0);
+}
+
+static void ps8640_post_disable(struct drm_bridge *bridge)
+{
+	struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
+
+	if (drm_panel_unprepare(ps_bridge->panel)) {
+		DRM_ERROR("failed to unprepare panel\n");
+		return;
+	}
+}
+
+static int ps8640_get_modes(struct drm_connector *connector)
+{
+	struct ps8640 *ps_bridge = connector_to_ps8640(connector);
+	struct i2c_client *client = ps_bridge->client;
+
+	ps8640_prepare(ps_bridge);
+	ps8640_regw(client, ps_bridge->base_reg + 2, 0xea, 0xd0);
+
+	return drm_panel_get_modes(ps_bridge->panel);
+}
+
+static struct drm_encoder *ps8640_best_encoder(struct drm_connector *connector)
+{
+	struct ps8640 *ps_bridge;
+
+	ps_bridge = connector_to_ps8640(connector);
+	return ps_bridge->bridge.encoder;
+}
+
+static const struct drm_connector_helper_funcs
+	ps8640_connector_helper_funcs = {
+	.get_modes = ps8640_get_modes,
+	.best_encoder = ps8640_best_encoder,
+};
+
+static enum drm_connector_status ps8640_detect(struct drm_connector *connector,
+					       bool force)
+{
+	return connector_status_connected;
+}
+
+static void ps8640_connector_destroy(struct drm_connector *connector)
+{
+	drm_connector_unregister(connector);
+	drm_connector_cleanup(connector);
+}
+
+static const struct drm_connector_funcs ps8640_connector_funcs = {
+	.dpms = drm_atomic_helper_connector_dpms,
+	.fill_modes = drm_helper_probe_single_connector_modes,
+	.detect = ps8640_detect,
+	.destroy = ps8640_connector_destroy,
+	.reset = drm_atomic_helper_connector_reset,
+	.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
+	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
+};
+
+int ps8640_bridge_attach(struct drm_bridge *bridge)
+{
+	struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
+	int ret;
+
+	if (!bridge->encoder) {
+		DRM_ERROR("Parent encoder object not found");
+		return -ENODEV;
+	}
+
+	ret = drm_connector_init(bridge->dev, &ps_bridge->connector,
+				 &ps8640_connector_funcs,
+				 DRM_MODE_CONNECTOR_eDP);
+
+	if (ret) {
+		DRM_ERROR("Failed to initialize connector with drm\n");
+		return ret;
+	}
+
+	drm_connector_helper_add(&ps_bridge->connector,
+				 &ps8640_connector_helper_funcs);
+	drm_connector_register(&ps_bridge->connector);
+
+	ps_bridge->connector.dpms = DRM_MODE_DPMS_ON;
+	drm_mode_connector_attach_encoder(&ps_bridge->connector,
+					  bridge->encoder);
+
+	if (ps_bridge->panel)
+		drm_panel_attach(ps_bridge->panel, &ps_bridge->connector);
+
+	return ret;
+}
+
+static bool ps8640_bridge_mode_fixup(struct drm_bridge *bridge,
+				     const struct drm_display_mode *mode,
+				     struct drm_display_mode *adjusted_mode)
+{
+	return true;
+}
+
+static const struct drm_bridge_funcs ps8640_bridge_funcs = {
+	.attach = ps8640_bridge_attach,
+	.mode_fixup = ps8640_bridge_mode_fixup,
+	.disable = ps8640_disable,
+	.post_disable = ps8640_post_disable,
+	.pre_enable = ps8640_pre_enable,
+	.enable = ps8640_enable,
+};
+
+static int ps8640_probe(struct i2c_client *client,
+			const struct i2c_device_id *id)
+{
+	struct device *dev = &client->dev;
+	struct ps8640 *ps_bridge;
+	struct device_node *np = dev->of_node;
+	struct device_node *in_ep, *out_ep;
+	struct device_node *panel_node = NULL;
+	int ret, size;
+	u32 temp_reg;
+	const u8 *edidp;
+
+	ps_bridge = devm_kzalloc(dev, sizeof(*ps_bridge), GFP_KERNEL);
+	if (!ps_bridge)
+		return -ENOMEM;
+
+	/* FIXME - use of_graph_get_port_by_id(np, 1) on newer kernels */
+	in_ep = of_graph_get_next_endpoint(np, NULL);
+	if (in_ep) {
+		out_ep = of_graph_get_next_endpoint(np, in_ep);
+		of_node_put(in_ep);
+		if (out_ep) {
+			panel_node = of_graph_get_remote_port_parent(out_ep);
+			of_node_put(out_ep);
+		}
+	}
+	if (panel_node) {
+		ps_bridge->panel = of_drm_find_panel(panel_node);
+		of_node_put(panel_node);
+		if (!ps_bridge->panel)
+			return -EPROBE_DEFER;
+	}
+
+	ps_bridge->client = client;
+
+	edidp = of_get_property(np, "edid", &size);
+
+	if (edidp)
+		ps_bridge->edid = devm_kmemdup(&client->dev, edidp, size,
+					       GFP_KERNEL);
+
+	ps_bridge->pwr_3v3_supply = devm_regulator_get(dev, "ps8640-3v3");
+	if (IS_ERR(ps_bridge->pwr_3v3_supply)) {
+		dev_err(dev, "cannot get ps_bridge->pwr_3v3_supply\n");
+		return PTR_ERR(ps_bridge->pwr_3v3_supply);
+	}
+
+	ps_bridge->pwr_1v2_supply = devm_regulator_get(dev, "ps8640-1v2");
+	if (IS_ERR(ps_bridge->pwr_1v2_supply)) {
+		dev_err(dev, "cannot get ps_bridge->pwr_1v2_supply\n");
+		return PTR_ERR(ps_bridge->pwr_1v2_supply);
+	}
+
+	ps_bridge->gpio_mode_sel_n = devm_gpiod_get(&client->dev, "mode-sel",
+						    GPIOD_OUT_HIGH);
+	if (IS_ERR(ps_bridge->gpio_mode_sel_n)) {
+		ret = PTR_ERR(ps_bridge->gpio_mode_sel_n);
+		DRM_ERROR("cannot get gpio_mode_sel_n %d\n", ret);
+		return ret;
+	}
+
+	ret = gpiod_direction_output(ps_bridge->gpio_mode_sel_n, 1);
+	if (ret) {
+		DRM_ERROR("cannot configure gpio_mode_sel_n\n");
+		return ret;
+	}
+
+	ps_bridge->gpio_pwr_n = devm_gpiod_get(&client->dev, "power",
+					       GPIOD_OUT_HIGH);
+	if (IS_ERR(ps_bridge->gpio_pwr_n)) {
+		ret = PTR_ERR(ps_bridge->gpio_pwr_n);
+		DRM_ERROR("cannot get gpio_pwr_n %d\n", ret);
+		return ret;
+	}
+
+	ret = gpiod_direction_output(ps_bridge->gpio_pwr_n, 1);
+	if (ret) {
+		DRM_ERROR("cannot configure gpio_pwr_n\n");
+		return ret;
+	}
+
+	ps_bridge->gpio_rst_n = devm_gpiod_get(&client->dev, "reset",
+					       GPIOD_OUT_HIGH);
+	if (IS_ERR(ps_bridge->gpio_rst_n)) {
+		ret = PTR_ERR(ps_bridge->gpio_rst_n);
+		DRM_ERROR("cannot get gpio_rst_n %d\n", ret);
+		return ret;
+	}
+
+	ret = gpiod_direction_output(ps_bridge->gpio_rst_n, 1);
+	if (ret) {
+		DRM_ERROR("cannot configure gpio_rst_n\n");
+		return ret;
+	}
+
+	ret = of_property_read_u32(dev->of_node, "reg", &temp_reg);
+	if (ret) {
+		DRM_ERROR("Can't read base_reg value\n");
+		return ret;
+	}
+	ps_bridge->base_reg = temp_reg;
+
+	ps_bridge->bridge.funcs = &ps8640_bridge_funcs;
+	ps_bridge->bridge.of_node = dev->of_node;
+	ret = drm_bridge_add(&ps_bridge->bridge);
+	if (ret) {
+		DRM_ERROR("Failed to add bridge\n");
+		return ret;
+	}
+
+	i2c_set_clientdata(client, ps_bridge);
+
+	return 0;
+}
+
+static int ps8640_remove(struct i2c_client *client)
+{
+	struct ps8640 *ps_bridge = i2c_get_clientdata(client);
+
+	drm_bridge_remove(&ps_bridge->bridge);
+
+	return 0;
+}
+
+static const struct i2c_device_id ps8640_i2c_table[] = {
+	{"parade,ps8640", 0},
+	{},
+};
+MODULE_DEVICE_TABLE(i2c, ps8640_i2c_table);
+
+static const struct of_device_id ps8640_match[] = {
+	{ .compatible = "parade,ps8640" },
+	{},
+};
+MODULE_DEVICE_TABLE(of, ps8640_match);
+
+static struct i2c_driver ps8640_driver = {
+	.id_table = ps8640_i2c_table,
+	.probe = ps8640_probe,
+	.remove = ps8640_remove,
+	.driver = {
+		.name = "parade,ps8640",
+		.owner = THIS_MODULE,
+		.of_match_table = ps8640_match,
+	},
+};
+module_i2c_driver(ps8640_driver);
+
+MODULE_AUTHOR("Jitao Shi <jitao.shi@mediatek.com>");
+MODULE_AUTHOR("CK Hu <ck.hu@mediatek.com>");
+MODULE_DESCRIPTION("PARADE ps8640 DSI-eDP converter driver");
+MODULE_LICENSE("GPL v2");
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties
  2015-10-16 12:15 [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties CK Hu
  2015-10-16 12:15 ` [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge CK Hu
@ 2015-10-16 13:04 ` Mark Rutland
  2015-10-16 13:08 ` Philipp Zabel
       [not found] ` <1444997709-57293-1-git-send-email-ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
  3 siblings, 0 replies; 12+ messages in thread
From: Mark Rutland @ 2015-10-16 13:04 UTC (permalink / raw)
  To: CK Hu
  Cc: Rob Herring, Pawel Moll, Ian Campbell, Kumar Gala, David Airlie,
	Matthias Brugger, Jitao Shi, Thierry Reding, Ajay Kumar, Inki Dae,
	Rahul Sharma, Sean Paul, Vincent Palatin, Andy Yan, Philipp Zabel,
	Russell King, devicetree, linux-kernel, dri-devel,
	linux-arm-kernel, linux-mediatek, srv_heupstream, Sascha Hauer,
	yingjoe.chen, eddie.huang

On Fri, Oct 16, 2015 at 08:15:08PM +0800, CK Hu wrote:
> From: Jitao Shi <jitao.shi@mediatek.com>
> 
> Add documentation for DT properties supported by ps8640
> DSI-eDP converter.
> 
> Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
> ---
>  .../devicetree/bindings/video/bridge/ps8640.txt    |   48 ++++++++++++++++++++
>  1 file changed, 48 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/video/bridge/ps8640.txt
> 
> diff --git a/Documentation/devicetree/bindings/video/bridge/ps8640.txt b/Documentation/devicetree/bindings/video/bridge/ps8640.txt
> new file mode 100644
> index 0000000..450b5df
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/video/bridge/ps8640.txt
> @@ -0,0 +1,48 @@
> +ps8640-bridge bindings
> +
> +Required properties:
> +	- compatible: "parade,ps8640"
> +	- reg: first i2c address of the bridge

Ther can be multiple addresses?

> +	- power-gpios: OF device-tree gpio specification for power pin.
> +	- reset-gpios: OF device-tree gpio specification for reset pin.
> +	- mode-sel-gpios: OF device-tree gpio specification for mode-sel pin.
> +	- ps8640-1v2-supply: OF device-tree regulator specification for 1v2.
> +	- ps8640-3v3-supply: OF device-tree regulator specification for 3v3.

There's no need for the "ps8640-" prefix on these two. Please drop it.

> +Optional properties:
> +	- video interfaces: Device node can contain video interface port
> +			    nodes for panel according to [1].

Replace this part with:

The device node can contain video interface port nodes per the
video-interfaces binding [1].

Thanks,
Mark.

> +
> +[1]: Documentation/devicetree/bindings/media/video-interfaces.txt
> +
> +Example:
> +	edp-bridge@18 {
> +		compatible = "parade,ps8640";
> +		reg = <0x18>;
> +		power-gpios = <&pio 116 GPIO_ACTIVE_HIGH>;
> +		reset-gpios = <&pio 115 GPIO_ACTIVE_HIGH>;
> +		mode-sel-gpios = <&pio 92 GPIO_ACTIVE_HIGH>;
> +		ps8640-1v2-supply = <&ps8640_fixed_1v2>;
> +		ps8640-3v3-supply = <&mt6397_vgp2_reg>;
> +
> +		ports {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			port@0 {
> +				reg = <0>;
> +
> +				ps8640_in: endpoint {
> +					remote-endpoint = <&dsi0_out>;
> +				};
> +			};
> +
> +			port@1 {
> +				reg = <1>;
> +
> +				ps8640_out: endpoint {
> +					remote-endpoint = <&panel_in>;
> +				};
> +			};
> +		};
> +	};
> -- 
> 1.7.9.5
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge
  2015-10-16 12:15 ` [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge CK Hu
@ 2015-10-16 13:06   ` Mark Rutland
  2015-10-16 13:27     ` Rob Herring
       [not found]   ` <1444997709-57293-2-git-send-email-ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
  2015-10-16 13:52   ` [PATCH] drm/bridge: fix platform_no_drv_owner.cocci warnings kbuild test robot
  2 siblings, 1 reply; 12+ messages in thread
From: Mark Rutland @ 2015-10-16 13:06 UTC (permalink / raw)
  To: CK Hu
  Cc: Rob Herring, Pawel Moll, Ian Campbell, Kumar Gala, David Airlie,
	Matthias Brugger, Jitao Shi, Thierry Reding, Ajay Kumar, Inki Dae,
	Rahul Sharma, Sean Paul, Vincent Palatin, Andy Yan, Philipp Zabel,
	Russell King, devicetree, linux-kernel, dri-devel,
	linux-arm-kernel, linux-mediatek, srv_heupstream, Sascha Hauer,
	yingjoe.chen, eddie.huang

> +	/* FIXME - use of_graph_get_port_by_id(np, 1) on newer kernels */
> +	in_ep = of_graph_get_next_endpoint(np, NULL);

Huh?

> +	edidp = of_get_property(np, "edid", &size);

This property wasn't mentioned in the binding document.

Please describe it. If it's from a more generic binding, refer to that
from the binding document.

Thanks,
Mark.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties
  2015-10-16 12:15 [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties CK Hu
  2015-10-16 12:15 ` [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge CK Hu
  2015-10-16 13:04 ` [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties Mark Rutland
@ 2015-10-16 13:08 ` Philipp Zabel
       [not found] ` <1444997709-57293-1-git-send-email-ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
  3 siblings, 0 replies; 12+ messages in thread
From: Philipp Zabel @ 2015-10-16 13:08 UTC (permalink / raw)
  To: CK Hu
  Cc: Mark Rutland, dri-devel, Ajay Kumar, Vincent Palatin, cawa.cheng,
	Russell King, Thierry Reding, devicetree, Jitao Shi, Pawel Moll,
	Ian Campbell, Rob Herring, linux-mediatek, yingjoe.chen,
	Matthias Brugger, eddie.huang, linux-arm-kernel, Rahul Sharma,
	srv_heupstream, linux-kernel, Sascha Hauer, Kumar Gala, Andy Yan

Hi CK,

there is a typo in the subject: s/Dcumentation/Documentation/.

Am Freitag, den 16.10.2015, 20:15 +0800 schrieb CK Hu:
> From: Jitao Shi <jitao.shi@mediatek.com>
> 
> Add documentation for DT properties supported by ps8640
> DSI-eDP converter.
> 
> Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
[...]
> +	- ps8640-1v2-supply: OF device-tree regulator specification for 1v2.
> +	- ps8640-3v3-supply: OF device-tree regulator specification for 3v3.

The ps8640- part of the regulator supply property names is redundant.
The PS8622 driver uses vdd12-supply as its regulator. Should we strive
for consistency here? Or if you have access to the datasheet, how are
these inputs called there?

> +
> +Optional properties:
> +	- video interfaces: Device node can contain video interface port
> +			    nodes for panel according to [1].
> +
> +[1]: Documentation/devicetree/bindings/media/video-interfaces.txt

It should be documented here that port@0 is the input port and port@1 is
the output port.

best regards
Philipp

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties
       [not found] ` <1444997709-57293-1-git-send-email-ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
@ 2015-10-16 13:21   ` Rob Herring
  0 siblings, 0 replies; 12+ messages in thread
From: Rob Herring @ 2015-10-16 13:21 UTC (permalink / raw)
  To: CK Hu
  Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, David Airlie,
	Matthias Brugger, Jitao Shi, Thierry Reding, Ajay Kumar, Inki Dae,
	Rahul Sharma, Sean Paul, Vincent Palatin, Andy Yan, Philipp Zabel,
	Russell King, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-mediatek

On Fri, Oct 16, 2015 at 7:15 AM, CK Hu <ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> wrote:
> From: Jitao Shi <jitao.shi-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
>
> Add documentation for DT properties supported by ps8640
> DSI-eDP converter.
>
> Signed-off-by: Jitao Shi <jitao.shi-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
> ---
>  .../devicetree/bindings/video/bridge/ps8640.txt    |   48 ++++++++++++++++++++

Please move to bindings/display/bridge/.

>  1 file changed, 48 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/video/bridge/ps8640.txt
>
> diff --git a/Documentation/devicetree/bindings/video/bridge/ps8640.txt b/Documentation/devicetree/bindings/video/bridge/ps8640.txt
> new file mode 100644
> index 0000000..450b5df
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/video/bridge/ps8640.txt
> @@ -0,0 +1,48 @@
> +ps8640-bridge bindings
> +
> +Required properties:
> +       - compatible: "parade,ps8640"
> +       - reg: first i2c address of the bridge
> +       - power-gpios: OF device-tree gpio specification for power pin.
> +       - reset-gpios: OF device-tree gpio specification for reset pin.
> +       - mode-sel-gpios: OF device-tree gpio specification for mode-sel pin.
> +       - ps8640-1v2-supply: OF device-tree regulator specification for 1v2.
> +       - ps8640-3v3-supply: OF device-tree regulator specification for 3v3.

As others have said, I would drop the part number and name them based
on the supply name (e.g. vdd?, vcore?).

> +
> +Optional properties:
> +       - video interfaces: Device node can contain video interface port
> +                           nodes for panel according to [1].

I don't think this should be optional.

> +
> +[1]: Documentation/devicetree/bindings/media/video-interfaces.txt
> +
> +Example:
> +       edp-bridge@18 {
> +               compatible = "parade,ps8640";
> +               reg = <0x18>;
> +               power-gpios = <&pio 116 GPIO_ACTIVE_HIGH>;
> +               reset-gpios = <&pio 115 GPIO_ACTIVE_HIGH>;
> +               mode-sel-gpios = <&pio 92 GPIO_ACTIVE_HIGH>;
> +               ps8640-1v2-supply = <&ps8640_fixed_1v2>;
> +               ps8640-3v3-supply = <&mt6397_vgp2_reg>;
> +
> +               ports {
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +
> +                       port@0 {
> +                               reg = <0>;
> +
> +                               ps8640_in: endpoint {
> +                                       remote-endpoint = <&dsi0_out>;
> +                               };
> +                       };
> +
> +                       port@1 {
> +                               reg = <1>;
> +
> +                               ps8640_out: endpoint {
> +                                       remote-endpoint = <&panel_in>;
> +                               };
> +                       };
> +               };
> +       };
> --
> 1.7.9.5
>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge
  2015-10-16 13:06   ` Mark Rutland
@ 2015-10-16 13:27     ` Rob Herring
  0 siblings, 0 replies; 12+ messages in thread
From: Rob Herring @ 2015-10-16 13:27 UTC (permalink / raw)
  To: Mark Rutland
  Cc: CK Hu, Pawel Moll, Ian Campbell, Kumar Gala, David Airlie,
	Matthias Brugger, Jitao Shi, Thierry Reding, Ajay Kumar, Inki Dae,
	Rahul Sharma, Sean Paul, Vincent Palatin, Andy Yan, Philipp Zabel,
	Russell King, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, dri-devel,
	linux-arm-kernel@lists.infradead.org, linux-mediatek

On Fri, Oct 16, 2015 at 8:06 AM, Mark Rutland <mark.rutland@arm.com> wrote:
>> +     /* FIXME - use of_graph_get_port_by_id(np, 1) on newer kernels */
>> +     in_ep = of_graph_get_next_endpoint(np, NULL);
>
> Huh?
>
>> +     edidp = of_get_property(np, "edid", &size);
>
> This property wasn't mentioned in the binding document.
>
> Please describe it. If it's from a more generic binding, refer to that
> from the binding document.

It should be generic, but currently documented in individual drivers.
I also think this is not the right location in the DT for this
property. It should be part of the panel or connector node instead.

Rob

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge
       [not found]   ` <1444997709-57293-2-git-send-email-ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
@ 2015-10-16 13:52     ` kbuild test robot
  2015-10-16 18:14     ` kbuild test robot
  1 sibling, 0 replies; 12+ messages in thread
From: kbuild test robot @ 2015-10-16 13:52 UTC (permalink / raw)
  To: CK Hu
  Cc: kbuild-all-JC7UmRfGjtg, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, David Airlie, Matthias Brugger,
	Jitao Shi, Thierry Reding, Ajay Kumar, Inki Dae, Rahul Sharma,
	Sean Paul, Vincent Palatin, Andy Yan, Philipp Zabel, Russell King,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	srv_heupstream-NuS5LvNUpcJWk0Htik3J/w

Hi Jitao,

[auto build test WARNING on drm-exynos/exynos-drm/for-next -- if it's inappropriate base, please suggest rules for selecting the more suitable base]

url:    https://github.com/0day-ci/linux/commits/CK-Hu/Dcumentation-bridge-Add-documentation-for-ps8640-DT-properties/20151016-201658


coccinelle warnings: (new ones prefixed by >>)

>> drivers/gpu/drm/bridge/parade-ps8640.c:480:3-8: No need to set .owner here. The core will do it.

Please review and possibly fold the followup patch.

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH] drm/bridge: fix platform_no_drv_owner.cocci warnings
  2015-10-16 12:15 ` [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge CK Hu
  2015-10-16 13:06   ` Mark Rutland
       [not found]   ` <1444997709-57293-2-git-send-email-ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
@ 2015-10-16 13:52   ` kbuild test robot
  2 siblings, 0 replies; 12+ messages in thread
From: kbuild test robot @ 2015-10-16 13:52 UTC (permalink / raw)
  To: CK Hu
  Cc: kbuild-all, Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, David Airlie, Matthias Brugger, Jitao Shi,
	Thierry Reding, Ajay Kumar, Inki Dae, Rahul Sharma, Sean Paul,
	Vincent Palatin, Andy Yan, Philipp Zabel, Russell King,
	devicetree, linux-kernel, dri-devel, linux-arm-kernel,
	linux-mediatek, srv_heupstream

drivers/gpu/drm/bridge/parade-ps8640.c:480:3-8: No need to set .owner here. The core will do it.

 Remove .owner field if calls are used which set it automatically

Generated by: scripts/coccinelle/api/platform_no_drv_owner.cocci

CC: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
---

 parade-ps8640.c |    1 -
 1 file changed, 1 deletion(-)

--- a/drivers/gpu/drm/bridge/parade-ps8640.c
+++ b/drivers/gpu/drm/bridge/parade-ps8640.c
@@ -477,7 +477,6 @@ static struct i2c_driver ps8640_driver =
 	.remove = ps8640_remove,
 	.driver = {
 		.name = "parade,ps8640",
-		.owner = THIS_MODULE,
 		.of_match_table = ps8640_match,
 	},
 };

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge
       [not found]   ` <1444997709-57293-2-git-send-email-ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
  2015-10-16 13:52     ` kbuild test robot
@ 2015-10-16 18:14     ` kbuild test robot
  1 sibling, 0 replies; 12+ messages in thread
From: kbuild test robot @ 2015-10-16 18:14 UTC (permalink / raw)
  To: CK Hu
  Cc: kbuild-all-JC7UmRfGjtg, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, David Airlie, Matthias Brugger,
	Jitao Shi, Thierry Reding, Ajay Kumar, Inki Dae, Rahul Sharma,
	Sean Paul, Vincent Palatin, Andy Yan, Philipp Zabel, Russell King,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	srv_heupstream-NuS5LvNUpcJWk0Htik3J/w

[-- Attachment #1: Type: text/plain, Size: 2372 bytes --]

Hi Jitao,

[auto build test ERROR on drm-exynos/exynos-drm/for-next -- if it's inappropriate base, please suggest rules for selecting the more suitable base]

url:    https://github.com/0day-ci/linux/commits/CK-Hu/Dcumentation-bridge-Add-documentation-for-ps8640-DT-properties/20151016-201658
config: s390-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=s390 

All errors (new ones prefixed by >>):

   drivers/gpu/drm/bridge/parade-ps8640.c: In function 'ps8640_prepare':
>> drivers/gpu/drm/bridge/parade-ps8640.c:178:2: error: implicit declaration of function 'gpiod_set_value' [-Werror=implicit-function-declaration]
     gpiod_set_value(ps_bridge->gpio_pwr_n, 1);
     ^
   drivers/gpu/drm/bridge/parade-ps8640.c: In function 'ps8640_probe':
>> drivers/gpu/drm/bridge/parade-ps8640.c:391:2: error: implicit declaration of function 'devm_gpiod_get' [-Werror=implicit-function-declaration]
     ps_bridge->gpio_mode_sel_n = devm_gpiod_get(&client->dev, "mode-sel",
     ^
>> drivers/gpu/drm/bridge/parade-ps8640.c:392:11: error: 'GPIOD_OUT_HIGH' undeclared (first use in this function)
              GPIOD_OUT_HIGH);
              ^
   drivers/gpu/drm/bridge/parade-ps8640.c:392:11: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/gpu/drm/bridge/parade-ps8640.c:399:2: error: implicit declaration of function 'gpiod_direction_output' [-Werror=implicit-function-declaration]
     ret = gpiod_direction_output(ps_bridge->gpio_mode_sel_n, 1);
     ^
   cc1: some warnings being treated as errors

vim +/gpiod_set_value +178 drivers/gpu/drm/bridge/parade-ps8640.c

   172		err = regulator_enable(ps_bridge->pwr_3v3_supply);
   173		if (err < 0) {
   174			DRM_ERROR("failed to enable pwr_3v3_supply: %d\n", err);
   175			return;
   176		}
   177	
 > 178		gpiod_set_value(ps_bridge->gpio_pwr_n, 1);
   179		gpiod_set_value(ps_bridge->gpio_rst_n, 0);
   180		usleep_range(500, 700);
   181		gpiod_set_value(ps_bridge->gpio_rst_n, 1);

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 38291 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH] drm/bridge: fix platform_no_drv_owner.cocci warnings
       [not found] ` <1501746323-5254-2-git-send-email-m.purski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
@ 2017-08-03 19:36   ` kbuild test robot
  0 siblings, 0 replies; 12+ messages in thread
From: kbuild test robot @ 2017-08-03 19:36 UTC (permalink / raw)
  Cc: kbuild-all-JC7UmRfGjtg,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	mark.rutland-5wv7dgnIgG8, b.zolnierkie-Sze3O3UU22JBDgjK7y7TUQ,
	krzk-DgEjT+Ai2ygdnm+yROfE0A, Maciej Purski,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
	Laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw

drivers/gpu/drm/bridge/sii9234.c:1010:3-8: No need to set .owner here. The core will do it.

 Remove .owner field if calls are used which set it automatically

Generated by: scripts/coccinelle/api/platform_no_drv_owner.cocci

Fixes: 9d5babbeda8a ("drm/bridge: add Silicon Image SiI9234 driver")
CC: Maciej Purski <m.purski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
Signed-off-by: Fengguang Wu <fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---

 sii9234.c |    1 -
 1 file changed, 1 deletion(-)

--- a/drivers/gpu/drm/bridge/sii9234.c
+++ b/drivers/gpu/drm/bridge/sii9234.c
@@ -1007,7 +1007,6 @@ MODULE_DEVICE_TABLE(i2c, sii9234_id);
 static struct i2c_driver sii9234_driver = {
 	.driver = {
 		.name	= "sii9234",
-		.owner	= THIS_MODULE,
 		.of_match_table = of_match_ptr(sii9234_dt_match),
 	},
 	.probe		= sii9234_mhl_tx_i2c_probe,
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH] drm/bridge: fix platform_no_drv_owner.cocci warnings
       [not found] ` <1524821982-2778-2-git-send-email-spanda-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
@ 2018-04-30  1:50   ` kbuild test robot
  0 siblings, 0 replies; 12+ messages in thread
From: kbuild test robot @ 2018-04-30  1:50 UTC (permalink / raw)
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, ryadav-sgV2jX0FEOL9JmXXK+q4OQ,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	abhinavk-sgV2jX0FEOL9JmXXK+q4OQ, Sandeep Panda,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	kbuild-all-JC7UmRfGjtg, hoegsberg-F7+t8E8rja9g9hUCZPvPmw,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	chandanu-sgV2jX0FEOL9JmXXK+q4OQ

From: Fengguang Wu <fengguang.wu@intel.com>

drivers/gpu/drm/bridge/ti-sn65dsi86.c:711:3-8: No need to set .owner here. The core will do it.

 Remove .owner field if calls are used which set it automatically

Generated by: scripts/coccinelle/api/platform_no_drv_owner.cocci

Fixes: 90200d12a626 ("drm/bridge: add support for sn65dsi86 bridge driver")
CC: Sandeep Panda <spanda@codeaurora.org>
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
---

 ti-sn65dsi86.c |    1 -
 1 file changed, 1 deletion(-)

--- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
@@ -708,7 +708,6 @@ MODULE_DEVICE_TABLE(of, ti_sn_bridge_mat
 static struct i2c_driver ti_sn_bridge_driver = {
 	.driver = {
 		.name = "ti_sn65dsi86",
-		.owner = THIS_MODULE,
 		.of_match_table = ti_sn_bridge_match_table,
 	},
 	.probe = ti_sn_bridge_probe,
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2018-04-30  1:50 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-16 12:15 [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties CK Hu
2015-10-16 12:15 ` [RFC 2/2] drm/bridge: Add I2C based driver for ps8640 bridge CK Hu
2015-10-16 13:06   ` Mark Rutland
2015-10-16 13:27     ` Rob Herring
     [not found]   ` <1444997709-57293-2-git-send-email-ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2015-10-16 13:52     ` kbuild test robot
2015-10-16 18:14     ` kbuild test robot
2015-10-16 13:52   ` [PATCH] drm/bridge: fix platform_no_drv_owner.cocci warnings kbuild test robot
2015-10-16 13:04 ` [RFC 1/2] Dcumentation: bridge: Add documentation for ps8640 DT properties Mark Rutland
2015-10-16 13:08 ` Philipp Zabel
     [not found] ` <1444997709-57293-1-git-send-email-ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2015-10-16 13:21   ` Rob Herring
  -- strict thread matches above, loose matches on Subject: below --
2017-08-03 19:36 [PATCH 1/2] drm/bridge: add Silicon Image SiI9234 driver kbuild test robot
     [not found] ` <1501746323-5254-2-git-send-email-m.purski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2017-08-03 19:36   ` [PATCH] drm/bridge: fix platform_no_drv_owner.cocci warnings kbuild test robot
2018-04-27  9:39 [PATCH v4 1/3] drm/bridge: add support for sn65dsi86 bridge driver Sandeep Panda
     [not found] ` <1524821982-2778-2-git-send-email-spanda-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-04-30  1:50   ` [PATCH] drm/bridge: fix platform_no_drv_owner.cocci warnings kbuild test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).