Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2917389pxj; Sun, 23 May 2021 15:36:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwIz6opRIYoG3vt1axoUVQn2Ksy5iZGx8Cid/Ip0HBJ0aV8HYYQwfyDVkR0HjzV9B+UUP8T X-Received: by 2002:aa7:d3c8:: with SMTP id o8mr22174670edr.181.1621809415000; Sun, 23 May 2021 15:36:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621809414; cv=none; d=google.com; s=arc-20160816; b=Aqzov0syNthQJJnaGBuDJBBTTrp8nzbRS/bP1nRN8B2azf4IOow57Syk1yv92gQjFr iSBcpU8Kyf+83frHDlPbW+6NAGrRHWq+aKM1rVSWAHf2QJZdShYr8WCe/TsD4w8dwyYk +7ev7YX/aZ5YpfzdHWhs53YnuNAuQDKELn7+NDA7lRMkDbxZo523nkpx6NjBS2BCMZcl 2kRuV/bslUczZBI1578DzrzhC8PzW0usDXQb+D0r0col3PgA3wNvabVMfLFwjvCnKerd cNfJccbfECvW+rS5dQw3q9YO3sZ5Ka0Gw/hEI7/1xiQtTqTWHqiy8YcDIvg634slQBjm 0hHg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=rgBcEqonLWzW3nDOTf2//5MFXneO/lh6fiWXZ8TFyMI=; b=m7IzV42ThnLvoRCUOMYBhUqQigWFWTA+kaWJMGSgckfewLo3f26kC6afSxEQObnP2b 4m2lutipgf8ny1qGBWAVNs57UxdqeUL/qP9QtSbom+DNDr4k4x1g0/JfbTFekW/MLAW2 MAzitTAdNzfPZHOyTLjPAVCazQoyErBCYKyRDaID2ty3/a9M4VUsKJEuC9JEDddghySa WLpHJU+216OYsQBKqUJSOJiKPfKAJYEACb+7wcm80b19kyKmgMZiKCgsiQwe3zP8KYmv IB0dxE70Rpz+xAY4v8D8cHwj0rsKoWfRqk5NWay5zUE9hJQaDbuI3R85x1Pn5ctM1WnR sCEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@svanheule.net header.s=mail1707 header.b=VkjP4a64; 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 h6si14226644ejq.486.2021.05.23.15.36.03; Sun, 23 May 2021 15:36: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=VkjP4a64; 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 S232051AbhEWWfv (ORCPT + 99 others); Sun, 23 May 2021 18:35:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232043AbhEWWfu (ORCPT ); Sun, 23 May 2021 18:35:50 -0400 Received: from polaris.svanheule.net (polaris.svanheule.net [IPv6:2a00:c98:2060:a004:1::200]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 198E1C06138A for ; Sun, 23 May 2021 15:34:23 -0700 (PDT) Received: from terra.local.svanheule.net (unknown [IPv6:2a02:a03f:eafb:ee01:bd37:7535:eb00:6fa]) (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 BB7F0202A53; Mon, 24 May 2021 00:34:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=svanheule.net; s=mail1707; t=1621809261; 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=rgBcEqonLWzW3nDOTf2//5MFXneO/lh6fiWXZ8TFyMI=; b=VkjP4a64DV4ne6Ld4FychRQJlNBiD22RBXbpdc8uF6y0db1IBP7k1KNl2N2lTP9G+QcrKz t8k/Ss7+VajklAlbrH2pvbcnGFISdWNZa6ZMOtGT1gpU3z7JkX40hWBnzLB/rTfe0XTgQV RWJK0dEavYgefNBiCbK0hQOOdI50xpJDcsZDnLVUAnblUa+umWJc8lKgveslbqqErsu0Fp VYTGaX2mkNHYOjKMKlerQZs2pV1pG/fswerNMjgWb8+UplPprkbAOZ4P8MfHRxYm7VqT93 OofFzc04rMbF8I3B3p472kV3FgcUg4THcIyjzTcAEYUiZOcxONfC2gXfJ9Dbog== From: Sander Vanheule To: Pavel Machek , Rob Herring , Lee Jones , Mark Brown , Greg Kroah-Hartman , "Rafael J . Wysocki" , Michael Walle , Linus Walleij , Bartosz Golaszewski , linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org Cc: Andrew Lunn , Andy Shevchenko , linux-kernel@vger.kernel.org, Sander Vanheule Subject: [PATCH v3 0/6] RTL8231 GPIO expander support Date: Mon, 24 May 2021 00:33:58 +0200 Message-Id: X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The RTL8231 GPIO and LED expander can be configured for use as an MDIO or SMI bus device. Currently only the MDIO mode is supported, although SMI mode support should be fairly straightforward, once an SMI bus driver is available. Provided features by the RTL8231: - Up to 37 GPIOs - Configurable drive strength: 8mA or 4mA (currently unsupported) - Input debouncing on high GPIOs (currently unsupported) - Up to 88 LEDs in multiple scan matrix groups - On, off, or one of six toggling intervals - "single-color mode": 2×36 single color LEDs + 8 bi-color LEDs - "bi-color mode": (12 + 2×6) bi-color LEDs + 24 single color LEDs - Up to one PWM output (currently unsupported) - Fixed duty cycle, 8 selectable frequencies (1.2kHz - 4.8kHz) Register access is provided through a new MDIO regmap provider. The GPIO controller uses gpio-regmap, although a patch is required to support a limitation of the chip. Changes since v2: - MDIO regmap support was merged, so patch is dropped here - Implement feedback for DT bindings - Use correct module names in Kconfigs - Fix k*alloc return value checks - Introduce GPIO regmap quirks to set output direction first - pinctrl: Use static pin descriptions for pin controller - pinctrl: Fix gpio consumer resource leak - mfd: Replace CONFIG_PM-ifdef'ery - leds: Rename interval to interval_ms Changes since v1: - Reintroduce MDIO regmap, with fixed Kconfig dependencies - Add configurable dir/value order for gpio-regmap direction_out call - Drop allocations for regmap fields that are used only on init - Move some definitions to MFD header - Add PM ops to replace driver remove for MFD - Change pinctrl driver to (modified) gpio-regmap - Change leds driver to use fwnode Changes since RFC: - Dropped MDIO regmap interface. I was unable to resolve the Kconfig dependency issue, so have reverted to using regmap_config.reg_read/write. - Added pinctrl support - Added LED support - Changed root device to MFD, with pinctrl and leds child devices. Root device is now an mdio_device driver. Sander Vanheule (6): gpio: regmap: Add quirk for output data register dt-bindings: leds: Binding for RTL8231 scan matrix dt-bindings: mfd: Binding for RTL8231 mfd: Add RTL8231 core device pinctrl: Add RTL8231 pin control and GPIO support leds: Add support for RTL8231 LED scan matrix .../bindings/leds/realtek,rtl8231-leds.yaml | 166 ++++++++ .../bindings/mfd/realtek,rtl8231.yaml | 190 +++++++++ drivers/gpio/gpio-regmap.c | 15 +- drivers/leds/Kconfig | 10 + drivers/leds/Makefile | 1 + drivers/leds/leds-rtl8231.c | 291 +++++++++++++ drivers/mfd/Kconfig | 9 + drivers/mfd/Makefile | 1 + drivers/mfd/rtl8231.c | 143 +++++++ drivers/pinctrl/Kconfig | 11 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/pinctrl-rtl8231.c | 398 ++++++++++++++++++ include/linux/gpio/regmap.h | 13 + include/linux/mfd/rtl8231.h | 57 +++ 14 files changed, 1304 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/leds/realtek,rtl8231-leds.yaml create mode 100644 Documentation/devicetree/bindings/mfd/realtek,rtl8231.yaml create mode 100644 drivers/leds/leds-rtl8231.c create mode 100644 drivers/mfd/rtl8231.c create mode 100644 drivers/pinctrl/pinctrl-rtl8231.c create mode 100644 include/linux/mfd/rtl8231.h -- 2.31.1