Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3344704pxj; Mon, 24 May 2021 04:43:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyu1nCos/53Rb4zw59mMvLpAXR20lGUHOKPZdnez6Y2p/Mxl/9NF8QSWVQ/rE4C78c45JDH X-Received: by 2002:a92:d4c7:: with SMTP id o7mr17213632ilm.130.1621856634677; Mon, 24 May 2021 04:43:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621856634; cv=none; d=google.com; s=arc-20160816; b=jS3LSrmARo+/u6cncXcm7I7XuhfwxwKlvRVjjVgQychG0xO1gh7ov+y0iiw7oOEr19 M4OjdkB7allNef6j5nz4dbiB0JD/aZki5Tp39rzjeAkXzaDWJG68HbUgEZkjKJG/jAzI EJ4b0ykvZMbCYEIGOoQGMzptncQ8gCFDfzF/9c86dkQXiKx3bPRK6KwwNSkOqBQQflfY 6X4bWDVK/NP0F/e4qKRAIQYRVckuUzstG5pjalzr6IZiJnaO5MeJPAmur/HM+HgJKjot QBH0CHb7DHSXCNlbAP9r6W9CaHI7zs1z+WjHR16CDkzPn/Wk/vlxduTogjurOKP6HIpA LiUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id:dkim-signature; bh=7YduOA1ohs3jQ8WNX3WfkNmDVw+6tiE+hLHwmyz0Weg=; b=FecivkPx8dI//4TOtFEOEi3xrjlHbaIagPF+PZOBSgwbf4P/AJAtg/6qW98MfgipaZ yEq5Xku6hzJ9ihtQv5OESuDIfVE7cNXz/TsVgyxu91bDjo8yk20vh2ruYmEMFXVP+RpT xPduCQv7WJRqOizHpmtUqN7jpuUSOGYPgJJLq2UfdAZM/AdyeTBjj2pDBXeI/gekvTWE 8uNwmyZo5laKhjOz95J2ATUVW35JvbGKJS1+hfPkttkuQVjjxKkr+MP6nYVyBjC7Bbej d6arWMA7PSUzUdNk8x8I67VvAnV1pLI55LDaVOejzgdexi5OJJVZGeadj8+GZLXqU7sX hDXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@svanheule.net header.s=mail1707 header.b=eM1O2D4P; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=svanheule.net Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k7si13992204jaq.89.2021.05.24.04.43.42; Mon, 24 May 2021 04:43:54 -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; dkim=pass header.i=@svanheule.net header.s=mail1707 header.b=eM1O2D4P; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=svanheule.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232685AbhEXLnZ (ORCPT + 99 others); Mon, 24 May 2021 07:43:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50562 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232667AbhEXLnY (ORCPT ); Mon, 24 May 2021 07:43:24 -0400 Received: from polaris.svanheule.net (polaris.svanheule.net [IPv6:2a00:c98:2060:a004:1::200]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D79DC061574 for ; Mon, 24 May 2021 04:41:56 -0700 (PDT) Received: from [IPv6:2a02:a03f:eafb:ee01:cbcc:e481:3e58:4db1] (unknown [IPv6:2a02:a03f:eafb:ee01:cbcc:e481:3e58:4db1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: sander@svanheule.net) by polaris.svanheule.net (Postfix) with ESMTPSA id B6F1E202EE1; Mon, 24 May 2021 13:41:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=svanheule.net; s=mail1707; t=1621856515; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7YduOA1ohs3jQ8WNX3WfkNmDVw+6tiE+hLHwmyz0Weg=; b=eM1O2D4P5WofRSvhvp9tlvkLj9sy7AkO4BGDRvI2GlyAn/ETiOk2ZZWna0wXH26mqK9vlW 85AjkVeYTOY/U9lG5CbMcZkbJyqQo7K+uAaoLBt1jZ9jnrri3CZteH9dDtdtG0eJ3UbvKM +7xnxwHbl4uvmw1ATtv5ejskdc58iSW3fwHjSHtkhO/5A+s+LbL1NtZBunyltquYIXDpSk PGQg8WZzpCY5Ev6dQt1UVUbh+WsgLwgFj95jJ67IvsrntAADBOvFn72Urrwn6HWa0lzTk+ NUX78/gsPNkR6HybpwYahB9qc6ho0tyrkzl8XQ9LqrPnx4nxjtrh0OXNbiGSZQ== Message-ID: <02bbf73ea8a14119247f07a677993aad2f45b088.camel@svanheule.net> Subject: Re: [PATCH v3 0/6] RTL8231 GPIO expander support From: Sander Vanheule To: Andy Shevchenko , Andrew Lunn Cc: Pavel Machek , Rob Herring , Lee Jones , Mark Brown , Greg Kroah-Hartman , "Rafael J . Wysocki" , Michael Walle , Linus Walleij , Bartosz Golaszewski , Linux LED Subsystem , devicetree , "open list:GPIO SUBSYSTEM" , Linux Kernel Mailing List Date: Mon, 24 May 2021 13:41:53 +0200 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.38.4 (3.38.4-1.fc33) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Andy, Andrew, On Mon, 2021-05-24 at 10:53 +0300, Andy Shevchenko wrote: > On Mon, May 24, 2021 at 4:11 AM Andrew Lunn wrote: > > > > > Changes since v2: > > >   - MDIO regmap support was merged, so patch is dropped here > > > > Do you have any idea how this will get merged. It sounds like one of > > the Maintainers will need a stable branch of regmap. > > This is not a problem if Mark provides an immutable branch to pull from. Mark has a tag (regmap-mdio) for this patch: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git/tag/?h=regmap-mdio > > > >   - Introduce GPIO regmap quirks to set output direction first > > > > I thought you had determined it was possible to set output before > > direction? > > Same thoughts when I saw an updated version of that patch. My > anticipation was to not see it at all. The two devices I've been trying to test the behaviour on are: * Netgear GS110TPP: has an RTL8231 with three LEDs, each driven via a pin configured as (active-low) GPIO. The LEDs are easy for a quick visual check. * Zyxel GS1900-8: RTL8231 used for the front panel button, and an active-low GPIO used to hard reset the main SoC (an RTL8380). I've modified this board to change some of the strapping pin values, but testing with the jumpers and pull-up/down resistors is a bit more tedious. On the Netgear, I tested the following with and without the quirk: # Set as OUT-LOW twice, to avoid the quirk. Always turns the LED on gpioset 1 32=0; gpioset 1 32=0 # Get value to change to input, turns the LED off (high impedance) # Will return 1 due to (weak) internal pull-up gpioget 1 32 # Set as OUT-HIGH, should result in LED off # When the quirk is disabled, the LED turns on (i.e. old OUT-LOW value) # When the quirk is enabled, the LED remains off (i.e. correct OUT-HIGH value) gpioset 1 32=1 Now, what's confusing (to me) is that the inverse doesn't depend on the quirk: # Set as OUT-HIGH twice gpioset 1 32=1; gpioset 1 32=1 # Change to high-Z gpioget 1 32 # Set to OUT-LOW, always results in LED on, with or without quirk gpioset 1 32=0 Any idea why this would be (or appear) broken on the former case, but not on the latter? I was trying to reproduce this behaviour on the Zyxel, but using the strapping pins that are also used to configure the device's address. So perhaps the pull- ups/-downs were confusing the results. Using a separate pin on the Zyxel's RTL8231, I've now been able to confirm the same behaviour as on the Netgear, including capturing the resulting glitch (with my simple logic analyser) when enabling the quirk in the first test case. I hope this explains why I've still included the quirk in this revision. If not, please let me know what isn't clear. Best, Sander