All of lore.kernel.org
 help / color / mirror / Atom feed
From: rmk+kernel@armlinux.org.uk (Russell King)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 7/7] drm/i2c: tda998x: register bridge outside of component helper
Date: Mon, 30 Jul 2018 17:42:37 +0100	[thread overview]
Message-ID: <E1fkBFl-00049E-3F@rmk-PC.armlinux.org.uk> (raw)
In-Reply-To: <20180730164137.GD17271@n2100.armlinux.org.uk>

Register the bridge outside of the component helper as we have
drivers that wish to use the tda998x without its encoder.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
 drivers/gpu/drm/i2c/tda998x_drv.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index ea71602d1139..57a42269a7fb 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1893,18 +1893,8 @@ static int tda998x_encoder_init(struct device *dev, struct drm_device *drm)
 static int tda998x_bind(struct device *dev, struct device *master, void *data)
 {
 	struct drm_device *drm = data;
-	int ret;
-
-	ret = tda998x_create(dev);
-	if (ret)
-		return ret;
 
-	ret = tda998x_encoder_init(dev, drm);
-	if (ret) {
-		tda998x_destroy(dev);
-		return ret;
-	}
-	return 0;
+	return tda998x_encoder_init(dev, drm);
 }
 
 static void tda998x_unbind(struct device *dev, struct device *master,
@@ -1913,7 +1903,6 @@ static void tda998x_unbind(struct device *dev, struct device *master,
 	struct tda998x_priv *priv = dev_get_drvdata(dev);
 
 	drm_encoder_cleanup(&priv->encoder);
-	tda998x_destroy(dev);
 }
 
 static const struct component_ops tda998x_ops = {
@@ -1924,16 +1913,27 @@ static const struct component_ops tda998x_ops = {
 static int
 tda998x_probe(struct i2c_client *client, const struct i2c_device_id *id)
 {
+	int ret;
+
 	if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
 		dev_warn(&client->dev, "adapter does not support I2C\n");
 		return -EIO;
 	}
-	return component_add(&client->dev, &tda998x_ops);
+
+	ret = tda998x_create(&client->dev);
+	if (ret)
+		return ret;
+
+	ret = component_add(&client->dev, &tda998x_ops);
+	if (ret)
+		tda998x_destroy(&client->dev);
+	return ret;
 }
 
 static int tda998x_remove(struct i2c_client *client)
 {
 	component_del(&client->dev, &tda998x_ops);
+	tda998x_destroy(&client->dev);
 	return 0;
 }
 
-- 
2.7.4

WARNING: multiple messages have this Message-ID (diff)
From: Russell King <rmk+kernel@armlinux.org.uk>
To: dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org
Cc: David Airlie <airlied@linux.ie>,
	Tomi Valkeinen <tomi.valkeinen@ti.com>,
	Liviu Dudau <Liviu.Dudau@arm.com>, Peter Rosin <peda@axentia.se>,
	Jyri Sarha <jsarha@ti.com>
Subject: [PATCH v2 7/7] drm/i2c: tda998x: register bridge outside of component helper
Date: Mon, 30 Jul 2018 17:42:37 +0100	[thread overview]
Message-ID: <E1fkBFl-00049E-3F@rmk-PC.armlinux.org.uk> (raw)
In-Reply-To: <20180730164137.GD17271@n2100.armlinux.org.uk>

Register the bridge outside of the component helper as we have
drivers that wish to use the tda998x without its encoder.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
 drivers/gpu/drm/i2c/tda998x_drv.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index ea71602d1139..57a42269a7fb 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1893,18 +1893,8 @@ static int tda998x_encoder_init(struct device *dev, struct drm_device *drm)
 static int tda998x_bind(struct device *dev, struct device *master, void *data)
 {
 	struct drm_device *drm = data;
-	int ret;
-
-	ret = tda998x_create(dev);
-	if (ret)
-		return ret;
 
-	ret = tda998x_encoder_init(dev, drm);
-	if (ret) {
-		tda998x_destroy(dev);
-		return ret;
-	}
-	return 0;
+	return tda998x_encoder_init(dev, drm);
 }
 
 static void tda998x_unbind(struct device *dev, struct device *master,
@@ -1913,7 +1903,6 @@ static void tda998x_unbind(struct device *dev, struct device *master,
 	struct tda998x_priv *priv = dev_get_drvdata(dev);
 
 	drm_encoder_cleanup(&priv->encoder);
-	tda998x_destroy(dev);
 }
 
 static const struct component_ops tda998x_ops = {
@@ -1924,16 +1913,27 @@ static const struct component_ops tda998x_ops = {
 static int
 tda998x_probe(struct i2c_client *client, const struct i2c_device_id *id)
 {
+	int ret;
+
 	if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
 		dev_warn(&client->dev, "adapter does not support I2C\n");
 		return -EIO;
 	}
-	return component_add(&client->dev, &tda998x_ops);
+
+	ret = tda998x_create(&client->dev);
+	if (ret)
+		return ret;
+
+	ret = component_add(&client->dev, &tda998x_ops);
+	if (ret)
+		tda998x_destroy(&client->dev);
+	return ret;
 }
 
 static int tda998x_remove(struct i2c_client *client)
 {
 	component_del(&client->dev, &tda998x_ops);
+	tda998x_destroy(&client->dev);
 	return 0;
 }
 
-- 
2.7.4

  parent reply	other threads:[~2018-07-30 16:42 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-30 16:41 [PATCH v2 0/7] tda998x: allow use with bridge based devices Russell King - ARM Linux
2018-07-30 16:41 ` Russell King - ARM Linux
2018-07-30 16:42 ` [PATCH v2 1/7] drm/i2c: tda998x: find the drm_device via the drm_connector Russell King
2018-07-30 16:42   ` Russell King
2018-07-30 16:42 ` [PATCH v2 2/7] drm/i2c: tda998x: split tda998x_encoder_dpms into enable/disable Russell King
2018-07-30 16:42   ` Russell King
2018-07-31  5:46   ` Peter Rosin
2018-07-31  5:46     ` Peter Rosin
2018-07-30 16:42 ` [PATCH v2 3/7] drm/i2c: tda998x: move tda998x_set_config() into tda998x_create() Russell King
2018-07-30 16:42   ` Russell King
2018-07-30 16:42 ` [PATCH v2 4/7] drm/i2c: tda998x: convert to bridge driver Russell King
2018-07-30 16:42   ` Russell King
2018-07-31  7:37   ` Peter Rosin
2018-07-31  7:37     ` Peter Rosin
2018-08-08 19:09   ` Sean Paul
2018-08-08 19:09     ` Sean Paul
2018-08-08 22:15     ` Russell King - ARM Linux
2018-08-08 22:15       ` Russell King - ARM Linux
2018-08-10 16:11       ` Sean Paul
2018-08-10 16:11         ` Sean Paul
2018-08-10 16:50         ` Russell King - ARM Linux
2018-08-10 16:50           ` Russell King - ARM Linux
2018-08-10 17:02           ` Sean Paul
2018-08-10 17:02             ` Sean Paul
2018-08-10 17:16             ` Russell King - ARM Linux
2018-08-10 17:16               ` Russell King - ARM Linux
2018-08-14 10:42               ` Daniel Vetter
2018-08-14 10:42                 ` Daniel Vetter
2018-08-14 10:48                 ` Russell King - ARM Linux
2018-08-14 10:48                   ` Russell King - ARM Linux
2018-08-14 11:11                   ` Daniel Vetter
2018-08-14 11:11                     ` Daniel Vetter
2018-08-27 16:15   ` Andrzej Hajda
2018-08-27 16:15     ` Andrzej Hajda
2018-08-27 17:59     ` Russell King - ARM Linux
2018-08-27 17:59       ` Russell King - ARM Linux
2018-08-28  7:31       ` Andrzej Hajda
2018-08-28  7:31         ` Andrzej Hajda
2018-07-30 16:42 ` [PATCH v2 5/7] drm/i2c: tda998x: allocate tda998x_priv inside tda998x_create() Russell King
2018-07-30 16:42   ` Russell King
2018-07-30 16:42 ` [PATCH v2 6/7] drm/i2c: tda998x: cleanup from previous changes Russell King
2018-07-30 16:42   ` Russell King
2018-07-30 16:42 ` Russell King [this message]
2018-07-30 16:42   ` [PATCH v2 7/7] drm/i2c: tda998x: register bridge outside of component helper Russell King
2018-08-27 16:19   ` Andrzej Hajda
2018-08-27 16:19     ` Andrzej Hajda
2018-07-31  5:44 ` [PATCH v2 0/7] tda998x: allow use with bridge based devices Peter Rosin
2018-07-31  5:44   ` Peter Rosin
2018-07-31  7:41   ` Russell King - ARM Linux
2018-07-31  7:41     ` Russell King - ARM Linux
2018-07-31  7:53     ` Peter Rosin
2018-07-31  7:53       ` Peter Rosin
2018-07-31  9:23       ` Russell King - ARM Linux
2018-07-31  9:23         ` Russell King - ARM Linux
2018-07-31  9:26         ` [PATCH 1/4] drm/i2c: tda998x: move mode_valid() to bridge Russell King
2018-07-31  9:26           ` Russell King
2018-08-27 16:24           ` Andrzej Hajda
2018-08-27 16:24             ` Andrzej Hajda
2018-07-31  9:26         ` [PATCH 2/4] drm/i2c: tda998x: get rid of private fill_modes function Russell King
2018-07-31  9:26           ` Russell King
2018-07-31  9:26         ` [PATCH 3/4] drm/i2c: tda998x: correct PLL divider calculation Russell King
2018-07-31  9:26           ` Russell King
2018-07-31  9:26         ` [PATCH 4/4] drm/i2c: tda998x: add support for pixel repeated modes Russell King
2018-07-31  9:26           ` Russell King
2018-07-31  9:42           ` Russell King - ARM Linux
2018-07-31  9:42             ` Russell King - ARM Linux
2018-07-31 10:43         ` [PATCH v2 0/7] tda998x: allow use with bridge based devices Peter Rosin
2018-07-31 10:43           ` Peter Rosin
2018-07-31 11:15           ` Russell King - ARM Linux
2018-07-31 11:15             ` Russell King - ARM Linux
2018-08-01  9:01             ` Peter Rosin
2018-08-01  9:01               ` Peter Rosin
2018-08-01  9:35               ` Russell King - ARM Linux
2018-08-01  9:35                 ` Russell King - ARM Linux
2018-08-02  6:06                 ` Peter Rosin
2018-08-02  6:06                   ` Peter Rosin
2018-11-12 16:50                   ` Peter Rosin
2018-11-12 16:50                     ` Peter Rosin
2018-11-12 17:00                     ` Russell King - ARM Linux
2018-11-12 17:00                       ` Russell King - ARM Linux

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E1fkBFl-00049E-3F@rmk-PC.armlinux.org.uk \
    --to=rmk+kernel@armlinux.org.uk \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.