All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yicong Yang <yangyicong@hisilicon.com>
To: <wsa@kernel.org>, <andriy.shevchenko@linux.intel.com>,
	<linux-i2c@vger.kernel.org>, <Sergey.Semin@baikalelectronics.ru>,
	<linux-kernel@vger.kernel.org>
Cc: <digetx@gmail.com>, <treding@nvidia.com>,
	<jarkko.nikula@linux.intel.com>, <rmk+kernel@armlinux.org.uk>,
	<song.bao.hua@hisilicon.com>, <john.garry@huawei.com>,
	<mika.westerberg@linux.intel.com>, <yangyicong@hisilicon.com>,
	<prime.zeng@huawei.com>, <linuxarm@huawei.com>
Subject: [PATCH v7 1/5] i2c: core: add managed function for adding i2c adapters
Date: Thu, 8 Apr 2021 19:17:17 +0800	[thread overview]
Message-ID: <1617880641-664-2-git-send-email-yangyicong@hisilicon.com> (raw)
In-Reply-To: <1617880641-664-1-git-send-email-yangyicong@hisilicon.com>

Some I2C controller drivers will only unregister the I2C
adapter in their .remove() callback, which can be done
by simply using a managed variant to add the I2C adapter.

So add the managed functions for adding the I2C adapter.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
---
 drivers/i2c/i2c-core-base.c | 26 ++++++++++++++++++++++++++
 include/linux/i2c.h         |  1 +
 2 files changed, 27 insertions(+)

diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index 63ebf72..de9402c 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -1703,6 +1703,32 @@ void i2c_del_adapter(struct i2c_adapter *adap)
 }
 EXPORT_SYMBOL(i2c_del_adapter);
 
+static void devm_i2c_del_adapter(void *adapter)
+{
+	i2c_del_adapter(adapter);
+}
+
+/**
+ * devm_i2c_add_adapter - device-managed variant of i2c_add_adapter()
+ * @dev: managing device for adding this I2C adapter
+ * @adapter: the adapter to add
+ * Context: can sleep
+ *
+ * Add adapter with dynamic bus number, same with i2c_add_adapter()
+ * but the adapter will be auto deleted on driver detach.
+ */
+int devm_i2c_add_adapter(struct device *dev, struct i2c_adapter *adapter)
+{
+	int ret;
+
+	ret = i2c_add_adapter(adapter);
+	if (ret)
+		return ret;
+
+	return devm_add_action_or_reset(dev, devm_i2c_del_adapter, adapter);
+}
+EXPORT_SYMBOL_GPL(devm_i2c_add_adapter);
+
 static void i2c_parse_timing(struct device *dev, char *prop_name, u32 *cur_val_p,
 			    u32 def_val, bool use_def)
 {
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 5662265..10bd0b0 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -844,6 +844,7 @@ static inline void i2c_mark_adapter_resumed(struct i2c_adapter *adap)
  */
 #if IS_ENABLED(CONFIG_I2C)
 int i2c_add_adapter(struct i2c_adapter *adap);
+int devm_i2c_add_adapter(struct device *dev, struct i2c_adapter *adapter);
 void i2c_del_adapter(struct i2c_adapter *adap);
 int i2c_add_numbered_adapter(struct i2c_adapter *adap);
 
-- 
2.8.1


  reply	other threads:[~2021-04-08 11:20 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-08 11:17 [PATCH v7 0/5] Add support for HiSilicon I2C controller Yicong Yang
2021-04-08 11:17 ` Yicong Yang [this message]
2021-04-08 11:17 ` [PATCH v7 2/5] i2c: core: add api to provide frequency mode strings Yicong Yang
2021-04-08 20:55   ` Wolfram Sang
2021-04-09 10:36     ` Andy Shevchenko
2021-04-09 11:37       ` Wolfram Sang
2021-04-09 11:40         ` Andy Shevchenko
2021-04-09 13:49           ` Yicong Yang
2021-04-08 11:17 ` [PATCH v7 3/5] i2c: add support for HiSilicon I2C controller Yicong Yang
2021-04-08 11:17 ` [PATCH v7 4/5] MAINTAINERS: Add maintainer for HiSilicon I2C driver Yicong Yang
2021-04-08 20:57   ` Wolfram Sang
2021-04-08 11:17 ` [PATCH v7 5/5] i2c: designware: Switch over to i2c_freq_mode_string() Yicong Yang

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=1617880641-664-2-git-send-email-yangyicong@hisilicon.com \
    --to=yangyicong@hisilicon.com \
    --cc=Sergey.Semin@baikalelectronics.ru \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=digetx@gmail.com \
    --cc=jarkko.nikula@linux.intel.com \
    --cc=john.garry@huawei.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=mika.westerberg@linux.intel.com \
    --cc=prime.zeng@huawei.com \
    --cc=rmk+kernel@armlinux.org.uk \
    --cc=song.bao.hua@hisilicon.com \
    --cc=treding@nvidia.com \
    --cc=wsa@kernel.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.