From patchwork Thu Feb 18 15:53:13 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Baluta X-Patchwork-Id: 584778 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 696E51401E7 for ; Fri, 19 Feb 2016 02:52:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1426663AbcBRPwD (ORCPT ); Thu, 18 Feb 2016 10:52:03 -0500 Received: from mga02.intel.com ([134.134.136.20]:32180 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1426448AbcBRPv1 (ORCPT ); Thu, 18 Feb 2016 10:51:27 -0500 Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga101.jf.intel.com with ESMTP; 18 Feb 2016 07:51:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,466,1449561600"; d="scan'208";a="50244286" Received: from dbaluta.rb.intel.com ([10.237.104.86]) by fmsmga004.fm.intel.com with ESMTP; 18 Feb 2016 07:51:23 -0800 From: Daniel Baluta To: jic23@kernel.org Cc: knaack.h@gmx.de, lars@metafoo.de, pmeerw@pmeerw.net, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, wsa@the-dreams.de, linux-i2c@vger.kernel.org, lucas.demarchi@intel.com, daniel.baluta@intel.com, srinivas.pandruvada@linux.intel.com, ggao@invensense.com, adi.reus@gmail.com, cmo@melexis.com, mwelling@ieee.org Subject: [RFC PATCH 8/9] i2c: i2c-mux: Allow for NULL select callback Date: Thu, 18 Feb 2016 17:53:13 +0200 Message-Id: <1455810794-3188-9-git-send-email-daniel.baluta@intel.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1455810794-3188-1-git-send-email-daniel.baluta@intel.com> References: <1455810794-3188-1-git-send-email-daniel.baluta@intel.com> Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org From: Adriana Reus Add a check in i2c_mux_master_xfer before calling the select callback. This is necessary so that NULL callbacks can be safely registered. Signed-off-by: Adriana Reus Signed-off-by: Daniel Baluta --- drivers/i2c/i2c-mux.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c index 00fc5b1..74d1700 100644 --- a/drivers/i2c/i2c-mux.c +++ b/drivers/i2c/i2c-mux.c @@ -46,11 +46,12 @@ static int i2c_mux_master_xfer(struct i2c_adapter *adap, { struct i2c_mux_priv *priv = adap->algo_data; struct i2c_adapter *parent = priv->parent; - int ret; + int ret = 0; /* Switch to the right mux port and perform the transfer. */ - ret = priv->select(parent, priv->mux_priv, priv->chan_id); + if (priv->select) + ret = priv->select(parent, priv->mux_priv, priv->chan_id); if (ret >= 0) ret = __i2c_transfer(parent, msgs, num); if (priv->deselect) @@ -66,11 +67,12 @@ static int i2c_mux_smbus_xfer(struct i2c_adapter *adap, { struct i2c_mux_priv *priv = adap->algo_data; struct i2c_adapter *parent = priv->parent; - int ret; + int ret = 0; /* Select the right mux port and perform the transfer. */ - ret = priv->select(parent, priv->mux_priv, priv->chan_id); + if (priv->select) + ret = priv->select(parent, priv->mux_priv, priv->chan_id); if (ret >= 0) ret = parent->algo->smbus_xfer(parent, addr, flags, read_write, command, size, data);