Received: by 10.192.165.148 with SMTP id m20csp1762618imm; Thu, 26 Apr 2018 01:45:58 -0700 (PDT) X-Google-Smtp-Source: AB8JxZo6UC+VzJdi8W7EQUSDrhVKWLKZSYImiN5rGcdM7uEs8IOGO5HiZ2NVA8+oQGo+T8j/y0XY X-Received: by 10.99.55.68 with SMTP id g4mr8498052pgn.283.1524732358879; Thu, 26 Apr 2018 01:45:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524732358; cv=none; d=google.com; s=arc-20160816; b=sQd9Dhe+RWllHSum2NbYGamu6xBODPTeGuC1++gEh7W+94huTMM90VQQQp7Pv7sl1L gd8K2NfBv6waTTQ+D+A3F4tgKU3CAjhg1Z4D3NVlCcBLiTAJut+emTx2FwwDrXuNWVpv zQCkWKhIFk72MCcx7qn8xrsKq6jacVLOhd+sTRiaGrgYMs1SdiZzkarlHsXDDFfWp4EV /EnHxCEtNLxRYT6G3W2nGly8vvL/onDCZO2wy9Yk/0JKhvw+TF0/uTv+s1uCnyQErlWU c8H/FonFXEYJwaRRv+rENgFT391huwpN3AxSmwpF4+/4Hk1Rb7JjyiDnwSo3dKT5Eewz 9Qqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=K9aClyGZjPs/V2O1Mn4D/qIgC/WMPxw7UB+vj4khDV8=; b=bCN4TE/Pueu+riVDKcMCP9U9o+lCxENwEtudkf2VhudjiQajjxB+ANtrAL5XO92zQo kiFHBAwSLxdotZdqIf4qVLwXFK5IDi7Hjgm5SsYmaT5wGaMIXj/AUf7biLlD2BIyORmu E3q6BK8Xo4z6hRwH/0DaZpRdMuVSkeqLKyevFrk0MJfHwq4T4xXVYSbalj8YTGfC2199 q4xG5vzLpBlGEc+3InkrrnQJ4K53Az7E+QAS8P407zo5ipdase7S++SWAMIJ3pJcoj1g PVcKPkAq05R3guHbJ3vn/gTO98MKwOHIgMVz2nSmXE9OT2/nndS2OUCOywEY/hjTcMFW lqGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=SjrS/isO; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k90si12079106pfh.50.2018.04.26.01.45.44; Thu, 26 Apr 2018 01:45:58 -0700 (PDT) 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; dkim=pass header.i=@linaro.org header.s=google header.b=SjrS/isO; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754149AbeDZIoe (ORCPT + 99 others); Thu, 26 Apr 2018 04:44:34 -0400 Received: from mail-qt0-f193.google.com ([209.85.216.193]:38452 "EHLO mail-qt0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753088AbeDZIo2 (ORCPT ); Thu, 26 Apr 2018 04:44:28 -0400 Received: by mail-qt0-f193.google.com with SMTP id z23-v6so30465038qti.5 for ; Thu, 26 Apr 2018 01:44:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=K9aClyGZjPs/V2O1Mn4D/qIgC/WMPxw7UB+vj4khDV8=; b=SjrS/isOXsmb5nxUwWcufAk4OFWGuiQEzGIiZGMlknrX/0bBR1g6Au5GM+pO03Z9yO kbDLwvEMZ+7pbrKKruX8f7/Nk7qpqRPkf4JKulbNHUZUYMtnG8eUERpMF+vzeO4klT7H uPBQX12xK0gM8h46lEVvIKMDpUyWrXHWeP/+M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=K9aClyGZjPs/V2O1Mn4D/qIgC/WMPxw7UB+vj4khDV8=; b=XtDRDsOONvSimM2nxMgbQM4LAAQsjp93NMl31W3/bry+UFGUAo/CDt5w3cRLyBquK4 xUPE+F8c/AgMWCwMJu7/eyI3TA0Uv/j7NJGwerV53upHb01AM5/Y7KWwIRoenEhWHNih lL7OTBPleMivoyO1JoeLTqPrtGhtuwvodKlhqXbyb7E45eG+vKPTiknnJLq6lObB3pbN N03meSUn63RA/WVn8nkxTJugdnnwLGK5lDeiAmj566mF42j7BtKpgzxMDEMUy0YftXob f4zh9DU/nIVdL4M2CVhOy6aINZbFNJasJpuWRsxruY09ho8hjsRA9wj+NIt6ROnMDj8O ToxQ== X-Gm-Message-State: ALQs6tAmArrCyrKJFjfKp0cZzf3PwgNoI7/9KTuokuiONOlgXN1rCjOF twB/LADwQYl1NgLyDenIh/73B/vAmpSeM+ZezmB/Qw== X-Received: by 2002:ac8:2724:: with SMTP id g33-v6mr34088240qtg.37.1524732268064; Thu, 26 Apr 2018 01:44:28 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.16.7 with HTTP; Thu, 26 Apr 2018 01:44:26 -0700 (PDT) In-Reply-To: <20180330074751.25987-10-boris.brezillon@bootlin.com> References: <20180330074751.25987-1-boris.brezillon@bootlin.com> <20180330074751.25987-10-boris.brezillon@bootlin.com> From: Linus Walleij Date: Thu, 26 Apr 2018 10:44:26 +0200 Message-ID: Subject: Re: [PATCH v4 09/10] gpio: Add a driver for Cadence I3C GPIO expander To: Boris Brezillon Cc: Wolfram Sang , linux-i2c@vger.kernel.org, Jonathan Corbet , linux-doc@vger.kernel.org, Greg Kroah-Hartman , Arnd Bergmann , Przemyslaw Sroka , Arkadiusz Golec , Alan Douglas , Bartosz Folta , Damian Kos , Alicja Jurasik-Urbaniak , Cyprian Wronka , Suresh Punnoose , Rafal Ciepiela , Thomas Petazzoni , Nishanth Menon , Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , "linux-kernel@vger.kernel.org" , Vitor Soares , Geert Uytterhoeven , Xiang Lin , "open list:GPIO SUBSYSTEM" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 30, 2018 at 9:47 AM, Boris Brezillon wrote: > Add a driver for Cadence I3C GPIO expander. > > Signed-off-by: Boris Brezillon This is pretty much OK, and I don't want to raise the bar even higher for you to get this code into the kernel, so: Acked-by: Linus Walleij The following is an observation for future improvement: > +static int cdns_i3c_gpio_read_reg(struct cdns_i3c_gpio *gpioc, u8 reg, > + u8 *val) > +{ > + struct i3c_priv_xfer xfers[] = { > + { > + .len = sizeof(reg), > + .data.out = ®, > + }, > + { > + .rnw = true, > + .len = sizeof(*val), > + .data.in = val, > + }, > + }; > + > + return i3c_device_do_priv_xfers(gpioc->i3cdev, xfers, > + ARRAY_SIZE(xfers)); > +} > + > +static int cdns_i3c_gpio_write_reg(struct cdns_i3c_gpio *gpioc, u8 reg, > + u8 val) > +{ > + struct i3c_priv_xfer xfers[] = { > + { > + .len = sizeof(reg), > + .data.out = ®, > + }, > + { > + .len = sizeof(val), > + .data.out = &val, > + }, > + }; > + > + return i3c_device_do_priv_xfers(gpioc->i3cdev, xfers, > + ARRAY_SIZE(xfers)); > +} This is starting to resemble drivers/base/regmap/regmap-i2c.c Maybe we should very quickly add regmap-i3c.c as this infrastructre has had a great positive effect on may kernel subsystems. > +static int cdns_i3c_gpio_get_direction(struct gpio_chip *g, unsigned offset) > +{ > + struct cdns_i3c_gpio *gpioc = gpioc_to_cdns_gpioc(g); > + > + return gpioc->dir & BIT(offset); I would: return !!(gpioc->dir & BIT(offset)); So you clamp it to bit 0. Yours, Linus Walleij