Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1576799ybl; Thu, 5 Dec 2019 03:45:02 -0800 (PST) X-Google-Smtp-Source: APXvYqwjG7vXdMVZf5CcagIv9pTcjn2D9kLE6Lqba5/VNj0uTk6PhzoFe8nyEWGw8EQbUS5mbWMl X-Received: by 2002:a9d:6e12:: with SMTP id e18mr5797319otr.47.1575546301984; Thu, 05 Dec 2019 03:45:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575546301; cv=none; d=google.com; s=arc-20160816; b=a2rFHc7hXsGHhHjStC/IsazCgtVYN7GdYBZZixp7JC1dNQYFCGuCjMg01uC2ORTKuP rkWGeTzCf6r648SYQavcuN2eo/JpvPA/HO3iMn+kTvQ6CdPe5RxfKcsb39087pk+nNF7 vNnKnjv844dgQ3mlm2cPkgyKiyf/be5AnlkYld4HtlU28YkfI0dlnWmWqZBgq9IzH/S2 iTBF1ZE+2kA748+Rfc6r//yhik6ScS/rQrOAvu+x7rqW3eKcHBjcf1a4HUUIALkBHkz7 B5AWjvDN8rKEl4cd11QSm7wWhZ7ULfFyoTpYH5V7Vk6qt5i6v6q31MUH1CNFax+msqZ0 CbTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=F27RkrduS2OxblUGGV7kCqRoI6B6Yx+hnpSjQndsVHw=; b=ekTa5DlBJ9ICOaZH7uNHrCuZJGamkXcG5qhWdNVLDgKTrEFGbOWbjIZoYh7IdthscR enYG7NPqa3q7RT6tGZxAl9yTGA5lLPupLQts4ONZ+fPKDsQHz39RvQ/ww8s51zWr7aBW RaVBtckh4tCXzyrhDL5RiwHtV9hnzmHTNdTyskrFmEfJc/HZ04lEJZHxO1eWHyNDIxVt vklQF7rYxzHqzHyQ/NDQU+XCO0VuoJ/bSymDCJb8oCWJ4s78DS+LcXhU7PjpGpLGv6+N Cz0jOilGavlqbyD4tOSVsGjGWXbBgJIPQ53FwXZBDkDTciS0Lv3SD6mF9OhuBFKprHIl GqIA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p186si3167934oih.172.2019.12.05.03.44.49; Thu, 05 Dec 2019 03:45:01 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729314AbfLELnx (ORCPT + 99 others); Thu, 5 Dec 2019 06:43:53 -0500 Received: from metis.ext.pengutronix.de ([85.220.165.71]:58795 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729017AbfLELnx (ORCPT ); Thu, 5 Dec 2019 06:43:53 -0500 Received: from soja.hi.pengutronix.de ([2001:67c:670:100:3ad5:47ff:feaf:13da]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1icpXv-0008MZ-RZ; Thu, 05 Dec 2019 12:43:47 +0100 Subject: Re: [v6] i2c: imx: support slave mode for imx I2C driver To: Sascha Hauer , Biwen Li Cc: shawnguo@kernel.org, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, wsa@the-dreams.de, leoyang.li@nxp.com, aisheng.dong@nxp.com, xiaoning.wang@nxp.com, xiaobo.xie@nxp.com, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, jiafei.pan@nxp.com, linux-arm-kernel@lists.infradead.org, laurentiu.tudor@nxp.com References: <20191203114809.21226-1-biwen.li@nxp.com> <20191204100005.r56huywxa7h3c6zr@pengutronix.de> From: Oleksij Rempel Message-ID: <9a1a00c1-e9fa-36a1-0e79-3492d9b98d9f@pengutronix.de> Date: Thu, 5 Dec 2019 12:43:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 MIME-Version: 1.0 In-Reply-To: <20191204100005.r56huywxa7h3c6zr@pengutronix.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-SA-Exim-Connect-IP: 2001:67c:670:100:3ad5:47ff:feaf:13da X-SA-Exim-Mail-From: o.rempel@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 04.12.19 11:00, Sascha Hauer wrote: > Hi, > > The patch looks ok to me now, but I still do not like the #ifdeffery > around CONFIG_I2C_SLAVE. With the patch I just sent (You are on Cc:) > we could apply the following on your patch which makes it more readable > and increases compile coverage. > > Wolfram, Biwen, what do you think? RCAR depends on slave: config I2C_RCAR tristate "Renesas R-Car I2C Controller" depends on ARCH_RENESAS || COMPILE_TEST select I2C_SLAVE see: drivers/i2c/busses/i2c-rcar.c So, I would suggest to do the same in imx. So far, I tested this patch on iMX6S. It works in one board (i2c-gpio + i2c-imx) and two board (i2c-imx + i2c-imx) configuration. Tested-by: Oleksij Rempel > > Sascha > > ---------------------------8<------------------------------ > > From 52f7c2bf59db61d4b27b59ca6404136e3ed77310 Mon Sep 17 00:00:00 2001 > From: Sascha Hauer > Date: Wed, 4 Dec 2019 10:56:34 +0100 > Subject: [PATCH] fixup! i2c: imx: support slave mode for imx I2C driver > > --- > drivers/i2c/busses/i2c-imx.c | 21 ++++++++++----------- > 1 file changed, 10 insertions(+), 11 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c > index 40ccfca600bf..c5d9ae8226cd 100644 > --- a/drivers/i2c/busses/i2c-imx.c > +++ b/drivers/i2c/busses/i2c-imx.c > @@ -203,9 +203,7 @@ struct imx_i2c_struct { > struct pinctrl_state *pinctrl_pins_gpio; > > struct imx_i2c_dma *dma; > -#if IS_ENABLED(CONFIG_I2C_SLAVE) > struct i2c_client *slave; > -#endif > }; > > static const struct imx_i2c_hwdata imx1_i2c_hwdata = { > @@ -913,12 +911,10 @@ static int i2c_imx_xfer(struct i2c_adapter *adapter, > > dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); > > -#if IS_ENABLED(CONFIG_I2C_SLAVE) > if (i2c_imx->slave) { > dev_err(&i2c_imx->adapter.dev, "Please not do operations of master mode in slave mode"); > return -EBUSY; > } > -#endif > > result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent); > if (result < 0) > @@ -1068,7 +1064,6 @@ static u32 i2c_imx_func(struct i2c_adapter *adapter) > | I2C_FUNC_SMBUS_READ_BLOCK_DATA; > } > > -#if IS_ENABLED(CONFIG_I2C_SLAVE) > static int i2c_imx_slave_init(struct imx_i2c_struct *i2c_imx) > { > int temp; > @@ -1159,6 +1154,10 @@ static int i2c_imx_reg_slave(struct i2c_client *client) > { > struct imx_i2c_struct *i2c_imx = i2c_get_adapdata(client->adapter); > int ret; > + > + if (!IS_ENABLED(CONFIG_I2C_SLAVE)) > + return -EINVAL; > + > if (i2c_imx->slave) > return -EBUSY; > > @@ -1173,6 +1172,9 @@ static int i2c_imx_unreg_slave(struct i2c_client *client) > { > struct imx_i2c_struct *i2c_imx = i2c_get_adapdata(client->adapter); > > + if (!IS_ENABLED(CONFIG_I2C_SLAVE)) > + return -EINVAL; > + > if (!i2c_imx->slave) > return -EINVAL; > > @@ -1188,15 +1190,12 @@ static int i2c_imx_unreg_slave(struct i2c_client *client) > > return 0; > } > -#endif > > static const struct i2c_algorithm i2c_imx_algo = { > .master_xfer = i2c_imx_xfer, > .functionality = i2c_imx_func, > -#if IS_ENABLED(CONFIG_I2C_SLAVE) > .reg_slave = i2c_imx_reg_slave, > .unreg_slave = i2c_imx_unreg_slave, > -#endif > }; > > static irqreturn_t i2c_imx_isr(int irq, void *dev_id) > @@ -1208,10 +1207,10 @@ static irqreturn_t i2c_imx_isr(int irq, void *dev_id) > > if (status & I2SR_IIF) { > i2c_imx_clr_if_bit(status, i2c_imx); > -#if IS_ENABLED(CONFIG_I2C_SLAVE) > - if (i2c_imx->slave) > + > + if (IS_ENABLED(CONFIG_I2C_SLAVE) && i2c_imx->slave) > return i2c_imx_slave_isr(i2c_imx); > -#endif > + > i2c_imx->i2csr = status; > return i2c_imx_master_isr(i2c_imx); > } > Kind regards, Oleksij Rempel -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |