From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1422789AbcFIIyY (ORCPT ); Thu, 9 Jun 2016 04:54:24 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:35756 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1161280AbcFIIyQ (ORCPT ); Thu, 9 Jun 2016 04:54:16 -0400 From: Chris Wilson To: linux-i2c@vger.kernel.org Cc: Chris Wilson , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Wolfram Sang , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH 1/3] i2c: Split adapter initialisation from registers Date: Thu, 9 Jun 2016 09:53:53 +0100 Message-Id: <1465462435-5240-1-git-send-email-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.8.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In order to handle devices that need to use the adapter prior to it being registered with the system, we first need to split out the initialisation of the adapter out of i2c_register_adapter. Signed-off-by: Chris Wilson Cc: Ville Syrjälä Cc: Wolfram Sang Cc: linux-i2c@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org --- drivers/i2c/i2c-core.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index af11b658984d..743c38a63da1 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c @@ -1511,16 +1511,8 @@ static int __process_new_adapter(struct device_driver *d, void *data) return i2c_do_add_adapter(to_i2c_driver(d), data); } -static int i2c_register_adapter(struct i2c_adapter *adap) +static int i2c_init_adapter(struct i2c_adapter *adap) { - int res = 0; - - /* Can't register until after driver model init */ - if (WARN_ON(!is_registered)) { - res = -EAGAIN; - goto out_list; - } - /* Sanity checks */ if (unlikely(adap->name[0] == '\0')) { pr_err("i2c-core: Attempt to register an adapter with " @@ -1548,6 +1540,23 @@ static int i2c_register_adapter(struct i2c_adapter *adap) if (adap->timeout == 0) adap->timeout = HZ; + return 0; +} + +static int i2c_register_adapter(struct i2c_adapter *adap) +{ + int res = 0; + + /* Can't register until after driver model init */ + if (WARN_ON(!is_registered)) { + res = -EAGAIN; + goto out_list; + } + + res = i2c_init_adapter(adap); + if (res) + goto out_list; + dev_set_name(&adap->dev, "i2c-%d", adap->nr); adap->dev.bus = &i2c_bus_type; adap->dev.type = &i2c_adapter_type; -- 2.8.1