Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp193818pxj; Thu, 3 Jun 2021 04:30:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzYuX7o+wgalrokCLvV3S+oQ3wQIjBb6x5qplZ+UlccJGpYw4caQJ9MyGHv+l6ApTobPs5t X-Received: by 2002:a05:6402:5201:: with SMTP id s1mr16295475edd.54.1622719814430; Thu, 03 Jun 2021 04:30:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622719814; cv=none; d=google.com; s=arc-20160816; b=L0+w6UeLMF47GzYiQ0LIWeIaITuxMqENeqJpb9xz5yKA/rashwt1a13/h2rYSkxgC7 fwaEKB6wcnuMiSZSfp+0Lj+TXxq+A/nFZR23tBo5iF8QCKsHu+/BnwW7ZotPrLzErktH z0GCPyAZ6EbfPqKUFgjtHoaC6dbDkHaBEnlTKXd0vjHIB7ZM9UJBBMsPjJoDkevZe05o 6tSpeZa5YRwAFLyERyUAtxkcd1y/l75IZleRbm9w3ZX6Qn/KExpvaC74C//PemOyiN0K QEKFHmeYJksmVHztDNFWdExRjHo9I/fFmA5jzI1m2KT2zk48uMirc21WpyCcRCz5XwL4 mbNg== 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=uy7edqnqtaAtBfOfz9dzIFfc/RSIZezcm98QJ+kd+pE=; b=jxxF2Z9/fKXbB8hKnbk7Rw6AivVIGdTsmxJtt0invaW1HSl7hKb11QFCuackAmwWbS 1+oKi69U1H4HO0kNMFlgZq7XEnXW+WiBm/wwklWzIHqSQCheAmWKQHlIJsecSEBJDn9V Q/mGBGMLK2BNP3UMDsa2FwSQAQq3llSC1uNgr9H9B/E4kkUv7baSHp6hy65hba68h+B/ avNTSTiCH9UYzgCml7Wtaa1EKw+2m94CuWqIXY7/I/EM/lmEHjD3+3f6EOS6o/gqn8h2 FEY/k2OrqrfBzYc8UOVwHj7ljMUrs0yy6hmM9e4FilksTg8Ki9byUaQkpyKNmdb72WwR BA0A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@svanheule.net header.s=mail1707 header.b=rjue1kvP; 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 b15si2229574ejl.351.2021.06.03.04.29.51; Thu, 03 Jun 2021 04:30:14 -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=rjue1kvP; 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 S229850AbhFCLac (ORCPT + 99 others); Thu, 3 Jun 2021 07:30:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229697AbhFCLab (ORCPT ); Thu, 3 Jun 2021 07:30:31 -0400 Received: from polaris.svanheule.net (polaris.svanheule.net [IPv6:2a00:c98:2060:a004:1::200]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 535B6C06174A for ; Thu, 3 Jun 2021 04:28:47 -0700 (PDT) Received: from [IPv6:2a02:a03f:eafb:ee01:398f:956e:2c86:f184] (unknown [IPv6:2a02:a03f:eafb:ee01:398f:956e:2c86:f184]) (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 35D2B2080B3; Thu, 3 Jun 2021 13:28:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=svanheule.net; s=mail1707; t=1622719725; 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=uy7edqnqtaAtBfOfz9dzIFfc/RSIZezcm98QJ+kd+pE=; b=rjue1kvPQCF8teUA4zwFe2KhhwYS58jf/JZvoxI2Z2CeeO6RERVPNNTrN+01Bi1VBdNwnC FrGIN2vSuHzr/rZrK4pmMPVjPvoJn9mTge44lYbJavcC+tkgeQ8nrWuz9RPhIX1bgEwc4K yxCpBCt2ejTJRaEPyqxf2oOsxhPAdCufUu1UWcevbDk/jRJln+tds0HvcZiEWvqTYnlFES E62QrB5ah+CPN35IsglmUoS76Ee9PNycwvVhVqwYKOpIBVtehDwG3ELV6KcjFbKYcGZb0F udI5N0Fl3biJbM8fOFPoZyPGAlLmwnfD24b9cc6Ohbl0AOKIPGTVFuMmxanD5g== Message-ID: Subject: Re: [PATCH v4 3/5] mfd: Add RTL8231 core device From: Sander Vanheule To: Andy Shevchenko Cc: Pavel Machek , Rob Herring , Lee Jones , Linus Walleij , Michael Walle , Linux LED Subsystem , devicetree , "open list:GPIO SUBSYSTEM" , Hans de Goede , Andrew Lunn , Linux Kernel Mailing List Date: Thu, 03 Jun 2021 13:28:42 +0200 In-Reply-To: References: <56fb027587fa067a249237ecaf40828cd508cdcc.1622713678.git.sander@svanheule.net> 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 On Thu, 2021-06-03 at 13:58 +0300, Andy Shevchenko wrote: > On Thu, Jun 3, 2021 at 1:01 PM Sander Vanheule wrote: > > > > The RTL8231 is implemented as an MDIO device, and provides a regmap > > interface for register access by the core and child devices. > > > > The chip can also be a device on an SMI bus, an I2C-like bus by Realtek. > > Since kernel support for SMI is limited, and no real-world SMI > > implementations have been encountered for this device, this is currently > > unimplemented. The use of the regmap interface should make any future > > support relatively straightforward. > > > > After reset, all pins are muxed to GPIO inputs before the pin drivers > > are enabled. This is done to prevent accidental system resets, when a > > pin is connected to the parent SoC's reset line. > > > > To provide different read and write semantics for the GPIO data > > registers, a secondary virtual register range is used to enable separate > > cacheing properties of pin input and output values. > > caching > > ... > > > > +static int rtl8231_reg_read(void *context, unsigned int reg, unsigned int > > *val) > > +{ > > +       struct mdio_device *mdio_dev = context; > > +       int ret; > > + > > +       ret = mdiobus_read(mdio_dev->bus, mdio_dev->addr, > > RTL8231_REAL_REG(reg)); > > + > > +       if (ret < 0) > > +               return ret; > > + > > +       *val = ret & 0xffff; > > + > > +       return 0; > > +} > > + > > +static int rtl8231_reg_write(void *context, unsigned int reg, unsigned int > > val) > > +{ > > +       struct mdio_device *mdio_dev = context; > > + > > +       return mdiobus_write(mdio_dev->bus, mdio_dev->addr, > > RTL8231_REAL_REG(reg), val); > > +} > > Hmm... Maybe we can amend regmap-mdio to avoid duplication of the > above? Something like xlate in gpio-regmap or so? > I wanted to make the masking explicit, but since regmap-mdio currently requires a register address width of 5 bit, it could move there. Actually, can we safely assume that any MDIO driver implementing clause-22 access (5-bit register address width) will just ignore higher bits? In that case, I could just drop these functions and not even modify regmap-mdio. It appears to work for bitbanged MDIO. > > +       mdiodev->reset_gpio = devm_gpiod_get_optional(dev, "reset", > > GPIOD_OUT_LOW); > > Missed > >   if (IS_ERR(mdiodev->reset_gpio)) >     return PTR_ERR(mdiodev->reset_gpio); > Will fix. Best, Sander