Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1413668pxb; Thu, 21 Oct 2021 23:54:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwMfB30/s8p/Ml+zMmLQodI6zBvgkmJK0qK8U7ud9CQs5vwnNt6Ok8NErCO3ns+8wu6foBN X-Received: by 2002:a17:907:c0c:: with SMTP id ga12mr12899342ejc.111.1634885657172; Thu, 21 Oct 2021 23:54:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634885657; cv=none; d=google.com; s=arc-20160816; b=MV+IKjacoMWWzRLcrZHg9lHGwF0jwv1546mxdWtPOjagdiBX70QijXZfTTzXoDubHJ rYKPMu0fBGCl4Qdddyt9dSzVlVI8sdYZbeOo5JYtiP23RbQNOP3sj0C6aNrKcPXQ2Z16 zB6Fz5Ki+3XxckOPR4Wx/mAaw7eTyY64qiYTACw4TkroWX0EE9Jj5FvyrT2QlITc6xEq M7zeGTMT2xU5+M2dK4ildxsgDJMj4T5LYkir8Ta3tnNJNhgKuJ5KRF5Z4rQag4N/BmPa j53zRlrQzavEdLbz9wjC1JvdFEKRr9aS7GEmpIA8VVLxhTaywtUMSLUel3EwYn0guBHc ua5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:date:message-id:from:references:cc:to :subject; bh=Lc79iy4qplT+VFByxAQ4Z17aVhPVIU7p5mp226CcX7I=; b=wdualjbNkSb7u4TdotupCS15I5FgvtoKl819deKknNXxO5eC1TZy6aSLEzktg4uIak I9qUFN9Axp9i8n0c05VSOJjHBnQunXyfaP1QKx1IWG1oXCFMKIjo62dHq4ZCseSUoTiJ AOf0FFKJx2HiJ1ugAToXpHLVhE5iHLdnVXxb6zTjzopXuNjSmCvO+6rijp7MSLTa12x8 vJ1cwTkKxbqkw7DgbHMvSKjGJ8rV7ECo104ONKG29JXTdBGVWXyXVwbQHcfFWEBPdy3e sTg1JXi6I9DSRuNcEvriIphLcTevi40pIZQWmZNyPyEwdYlSNmmqYi2/LIRgBe6YrRSh F6xA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l6si9388619edk.341.2021.10.21.23.53.53; Thu, 21 Oct 2021 23:54:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231923AbhJVGwY (ORCPT + 99 others); Fri, 22 Oct 2021 02:52:24 -0400 Received: from mout-u-107.mailbox.org ([91.198.250.252]:45534 "EHLO mout-u-107.mailbox.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230295AbhJVGwX (ORCPT ); Fri, 22 Oct 2021 02:52:23 -0400 X-Greylist: delayed 332 seconds by postgrey-1.27 at vger.kernel.org; Fri, 22 Oct 2021 02:52:23 EDT Received: from smtp102.mailbox.org (smtp102.mailbox.org [80.241.60.233]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-u-107.mailbox.org (Postfix) with ESMTPS id 4HbFFS5mZjzQkB9; Fri, 22 Oct 2021 08:44:28 +0200 (CEST) X-Virus-Scanned: amavisd-new at heinlein-support.de Subject: Re: [PATCH] i2c: mt76xx: add I2C_FUNC_NOSTART and I2C_M_REV_DIR_ADDR To: "zhaojh329@gmail.com" Cc: "matthias.bgg" , linux-i2c , linux-arm-kernel , linux-mediatek , linux-kernel References: <202110200007146639874@gmail.com> From: Stefan Roese Message-ID: <12006f4c-137c-4d78-fbaa-40776c65f079@denx.de> Date: Fri, 22 Oct 2021 08:44:24 +0200 MIME-Version: 1.0 In-Reply-To: <202110200007146639874@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 688E1131C Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 19.10.21 18:07, zhaojh329@gmail.com wrote: >  This patch adds I2C_FUNC_NOSTART and I2C_M_REV_DIR_ADDR support for > MediaTek MT7621/7628/7688. This is useful for some I2C slave chips, > such as 'drivers/input/joystick/as5011.c'. > > Signed-off-by: Jianhui Zhao > --- > drivers/i2c/busses/i2c-mt7621.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/i2c/busses/i2c-mt7621.c b/drivers/i2c/busses/i2c-mt7621.c > index 45fe4a7fe0c0..3d2763d9c090 100644 > --- a/drivers/i2c/busses/i2c-mt7621.c > +++ b/drivers/i2c/busses/i2c-mt7621.c > @@ -150,6 +150,9 @@ static int mtk_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, > for (i = 0; i < num; i++) { > pmsg = &msgs[i]; > > + if (pmsg->flags & I2C_M_NOSTART) > + goto nostart; > + > /* wait hardware idle */ > ret = mtk_i2c_wait_idle(i2c); > if (ret) > @@ -174,6 +177,8 @@ static int mtk_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, > } else { > /* 7 bits address */ > addr = i2c_8bit_addr_from_msg(pmsg); > + if (pmsg->flags & I2C_M_REV_DIR_ADDR) > + addr ^= 1; > iowrite32(addr, i2c->base + REG_SM0D0_REG); > ret = mtk_i2c_master_cmd(i2c, SM0CTL1_WRITE, 1); > if (ret) > @@ -187,6 +192,7 @@ static int mtk_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, > goto err_ack; > } > > +nostart: > /* transfer data */ > for (len = pmsg->len, j = 0; len > 0; len -= 8, j += 8) { > page_len = (len >= 8) ? 8 : len; > @@ -242,7 +248,8 @@ static int mtk_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, > > static u32 mtk_i2c_func(struct i2c_adapter *a) > { > - return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL | I2C_FUNC_PROTOCOL_MANGLING; > + return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL | I2C_FUNC_10BIT_ADDR > + | I2C_FUNC_PROTOCOL_MANGLING | I2C_FUNC_NOSTART; Nit: I prefer to have the "|" at the end of the upper line instead of adding it in the 2nd line. Other that this: Reviewed-by: Stefan Roese Thanks, Stefan