From patchwork Mon Mar 20 17:55:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lin, Meng-Bo" X-Patchwork-Id: 72449 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1433891wrt; Mon, 20 Mar 2023 13:59:25 -0700 (PDT) X-Google-Smtp-Source: AK7set+HB0Ln1a3v8Nc4LbL9rF4qW2yQV+HrTdUekMZCnfgRBOT9vKBpI2WC8cDu2i3pQRvUFx+H X-Received: by 2002:a05:6a20:8b8a:b0:d8:e8aa:f323 with SMTP id m10-20020a056a208b8a00b000d8e8aaf323mr8673370pzh.44.1679345965129; Mon, 20 Mar 2023 13:59:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679345965; cv=none; d=google.com; s=arc-20160816; b=NrZBcvV0QoMJj811B1nwztjqiEQqklv3GcretL9cg74QNBySxO+Wn+9SUfp0ZMQrFv N7GeaPrbmWmNDm1drXsDLzqVrQtlDjeAK7Xrf87uyi6bUatKGIUqn4itXU/fochHWPF+ NdR72ywrj7BLsEVhzieXfhI7Gy6Z7KVf9iGc+O5dQ3xIGh7YR+q+rK/b/5tMrhax5D5M H9geEmg7XsAE0lEX7pJO3HV1V3wSiySwLYsSkE5Oswo7ZzgbTLqT7eYRbUWMsIxbHQwf qrTa42XsuNxUWTJ/W3VbTlSq0xzh3AF+uOMw/KeXw/IyalwBPa5GeupN+pacPqH3u+YG /r7g== 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 :feedback-id:references:in-reply-to:message-id:subject:cc:from:to :dkim-signature:date; bh=FAkqOD8kiqkTEaAEfEctBYZB4b4Y94ELoYgOe0EWWpk=; b=xgUE2RV1SsSpgUTwFk7z5IoMzyG2gbidRjP6P1iaxAmdA2MgDIKqr2GVhZgfgu8Jta fQ9H6Xpx6gaJS56mKEjRNb0JJ67DaKOOMHluV+pZbI5We+c3LLVkEt9ocSzDberNzjzt rJ0bmdIwAWmegFIQE/qRMwj1IYZyVRYq5jH/U+fh+GzoPIPQIdVwT4gm50RODS1Yv8X2 OHe2Y8OjYWZb16DZ1DfR8vrkfV8D7V4yfNXiBbyJ8JbFGD7NrIh6D5UglgjNpobhsIy9 Tqbwm6drhIUbXaWjutfsKGFVesnegeq5CJb5MtECh7SAzsFf4//flbp31bzNECs1G86C x94A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@protonmail.com header.s=protonmail3 header.b=ZMhAHgPg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=protonmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n127-20020a632785000000b00502f457059dsi11840119pgn.330.2023.03.20.13.59.12; Mon, 20 Mar 2023 13:59:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@protonmail.com header.s=protonmail3 header.b=ZMhAHgPg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=protonmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229677AbjCTU4K (ORCPT + 99 others); Mon, 20 Mar 2023 16:56:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229583AbjCTU4I (ORCPT ); Mon, 20 Mar 2023 16:56:08 -0400 X-Greylist: delayed 4199 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Mon, 20 Mar 2023 13:56:00 PDT Received: from mail-41104.protonmail.ch (mail-41104.protonmail.ch [185.70.41.104]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E515DA3; Mon, 20 Mar 2023 13:55:59 -0700 (PDT) Date: Mon, 20 Mar 2023 17:55:21 +0000 Authentication-Results: mail-41104.protonmail.ch; dkim=pass (2048-bit key) header.d=protonmail.com header.i=@protonmail.com header.b="ZMhAHgPg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1679334933; x=1679594133; bh=FAkqOD8kiqkTEaAEfEctBYZB4b4Y94ELoYgOe0EWWpk=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=ZMhAHgPg6OUDCGsoHzTQSoirpDB1jUXVGQCPGqI8sxUuA4OBl8bdZ/YxSxXofUTF4 dHBuRkWVrF1MbyOggw/Qx2i7/IZHBkxZ01EkOTinpD2jUp8Mf85eiRk9bHJnRt2loF ZoiOARjYnSd2A+Abk0wVkuwjEXtVTYAf4tf/AfP6hTcdcQMaZIsxWNwrgimNeGLO92 gdDDg0i/W/vZUcc61XgjatznxWorG2NNFH3L9msrdfaTlVPetnEIE5NeJfYY4G5m+Y uUMlqnaOjUz3n3FKsndqNq3G/f71uQ/zfxoxlS57W6kOiBBQ6mHZNksr08M4fUgDin JLVtV5Tl854/w== To: linux-kernel@vger.kernel.org From: "Lin, Meng-Bo" Cc: Pavel Machek , Lee Jones , Rob Herring , Krzysztof Kozlowski , Nikita Travkin , Stephan Gerhold , linux-leds@vger.kernel.org, devicetree@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht Subject: [PATCH v2 1/2] dt-bindings: leds: aw2013: Document vddio-supply Message-ID: <20230320175131.174657-1-linmengbo0689@protonmail.com> In-Reply-To: <20230320174949.174600-1-linmengbo0689@protonmail.com> References: <20230320174949.174600-1-linmengbo0689@protonmail.com> Feedback-ID: 40467236:user:proton MIME-Version: 1.0 X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00,DATE_IN_PAST_03_06, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,SPF_HELO_PASS,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760912899224869426?= X-GMAIL-MSGID: =?utf-8?q?1760921874838046725?= Some LEDs controllers are used with external pull-up for the interrupt line and the I2C lines, so we might need to enable a regulator to bring the lines into usable state. Otherwise, this might cause spurious interrupts and reading from I2C will fail. Document support for "vddio-supply" that is enabled by the aw2013 driver so that the regulator gets enabled when needed. Signed-off-by: Lin, Meng-Bo --- Documentation/devicetree/bindings/leds/leds-aw2013.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/devicetree/bindings/leds/leds-aw2013.yaml b/Documentation/devicetree/bindings/leds/leds-aw2013.yaml index 08f3e1cfc1b1..79b69cf1d1fe 100644 --- a/Documentation/devicetree/bindings/leds/leds-aw2013.yaml +++ b/Documentation/devicetree/bindings/leds/leds-aw2013.yaml @@ -23,6 +23,11 @@ properties: vcc-supply: description: Regulator providing power to the "VCC" pin. + vddio-supply: + description: | + Optional regulator that provides digital I/O voltage, + e.g. for pulling up the interrupt line or the I2C pins. + "#address-cells": const: 1 From patchwork Mon Mar 20 17:55:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lin, Meng-Bo" X-Patchwork-Id: 72354 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1362675wrt; Mon, 20 Mar 2023 11:17:02 -0700 (PDT) X-Google-Smtp-Source: AK7set/kiW/Mu8N5oLxI1K5/Mg+DEOY9BCw/swJt5I0ZkY1KAlILrzzOqiStle1Ytc4LDpYLRu1e X-Received: by 2002:a17:90b:3846:b0:237:8417:d9e3 with SMTP id nl6-20020a17090b384600b002378417d9e3mr93017pjb.15.1679336222175; Mon, 20 Mar 2023 11:17:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679336222; cv=none; d=google.com; s=arc-20160816; b=RKEp6egj43GZ/RiqVVxCyDlNejiZwezistI4visRP4nP3SMw/tvYGxRXQAdgpBXGIM Q7uStbVZj2XaoAbvhm1KZ3eBNsc2sdjrMdihshrTzJX9A+ZMqT547m9nV/xwCp6xRIoj Pm9dNtp8/+2xiB9iWd/YENRbIUwIPGp72DdTSd6wO9mFMQ+JeB+US943lBjLyDy7ow7D 6S5xcElrHeQYtHryKbUn+Ao5xqJCaM7cMYW7Oub8+VUmrPqaVqhDQcb62Od1lSfQWItu aKlO8Q5SWFp8jxKkpApl05qfYzSugplv3n+C+Ve7db3vG6VqrWctYX4NF2H8oJLsDnRn 4JeA== 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 :feedback-id:references:in-reply-to:message-id:subject:cc:from:to :dkim-signature:date; bh=WnTjqPoCH078vNV00BMZ3l8kftmBf3Xp4U/sMRslT94=; b=uuZvRDXGl/PyzVtbgkKujM6kfD3voNjHRiUW5WJDK36tqB5wNXT1k5ZKCbYaQnFVK7 nX0tWvVWhqQeWcJN3xcS403l6Vco8gL8+V7uXQo95yLCrisWr3Z0ZKYDuZMRldLKVIHf 5EXlRG7iZkCOCpSdttMWMqOa3PWIwwcrPm+MHv4fK91RBzjaeTlzrZqNOVDf0yYI48Zh yUPDJiktXQ8yR6W1O349aeLFpXey9uyQe5kVmr44UnjTtjiYcxneSFlN1ZEKu9tfObsc LXIEXYvQy2utTumq7pxFECzERdqcLlbEQfnePRJ2tPgPiC8TTxBrOpiRbHT8SpXmkGkY +Btg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@protonmail.com header.s=protonmail3 header.b="MEYoC3t/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=protonmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c13-20020a17090ad90d00b0023b30b28b89si10369405pjv.56.2023.03.20.11.16.49; Mon, 20 Mar 2023 11:17:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@protonmail.com header.s=protonmail3 header.b="MEYoC3t/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=protonmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230145AbjCTSCZ (ORCPT + 99 others); Mon, 20 Mar 2023 14:02:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60240 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229744AbjCTSBy (ORCPT ); Mon, 20 Mar 2023 14:01:54 -0400 Received: from mail-40141.protonmail.ch (mail-40141.protonmail.ch [185.70.40.141]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 06F86166D3; Mon, 20 Mar 2023 10:56:23 -0700 (PDT) Date: Mon, 20 Mar 2023 17:55:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1679334922; x=1679594122; bh=WnTjqPoCH078vNV00BMZ3l8kftmBf3Xp4U/sMRslT94=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=MEYoC3t/S7+Cl2DFKbnGn+joi2EOIGRG8NbXBUdvvDmTwrW+iv1JFwuqVK2VekocQ feJ+ZQ7K2HPAH39NR/yLVH/UhA4AUkU4IBFyUYMyeOWc23d43rbbp7JBnRCT2Qh9k3 GT6vShagPTjGnJ8RDYq/3xhY9hN8jkkftq5yH8nLlL4JW+wqfjQ9QudSLqcEJxyG36 ZuZ2EgCc1EWyCy3uqbPJXVfubFCrx1e+h7d+Tn/skCFhhaJYD505j884lvUT71+GPr NSE20pxHef+72UF823jyQE01KS9dxMLY8JxEbmGrTjoGs+7AkYkQDc4xQyXOM02xU6 jXkuVz6RThn7g== To: linux-kernel@vger.kernel.org From: "Lin, Meng-Bo" Cc: Pavel Machek , Lee Jones , Rob Herring , Krzysztof Kozlowski , Nikita Travkin , Stephan Gerhold , linux-leds@vger.kernel.org, devicetree@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht Subject: [PATCH v2 2/2] leds: aw2013: Add vddio regulator Message-ID: <20230320175150.174711-1-linmengbo0689@protonmail.com> In-Reply-To: <20230320174949.174600-1-linmengbo0689@protonmail.com> References: <20230320174949.174600-1-linmengbo0689@protonmail.com> Feedback-ID: 40467236:user:proton MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760911658334076914?= X-GMAIL-MSGID: =?utf-8?q?1760911658334076914?= Some LEDs controllers are used with external pull-up for the interrupt line and the I2C lines, so we might need to enable a regulator to bring the lines into usable state. Otherwise, this might cause spurious interrupts and reading from I2C will fail. Implement support for "vddio-supply" that is enabled by the aw2013 driver so that the regulator gets enabled when needed. Signed-off-by: Lin, Meng-Bo --- drivers/leds/leds-aw2013.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/drivers/leds/leds-aw2013.c b/drivers/leds/leds-aw2013.c index 0b52fc9097c6..95f2f9bf95ee 100644 --- a/drivers/leds/leds-aw2013.c +++ b/drivers/leds/leds-aw2013.c @@ -62,7 +62,7 @@ struct aw2013_led { struct aw2013 { struct mutex mutex; /* held when writing to registers */ - struct regulator *vcc_regulator; + struct regulator_bulk_data regulators[2]; struct i2c_client *client; struct aw2013_led leds[AW2013_MAX_LEDS]; struct regmap *regmap; @@ -106,7 +106,8 @@ static void aw2013_chip_disable(struct aw2013 *chip) regmap_write(chip->regmap, AW2013_GCR, 0); - ret = regulator_disable(chip->vcc_regulator); + ret = regulator_bulk_disable(ARRAY_SIZE(chip->regulators), + chip->regulators); if (ret) { dev_err(&chip->client->dev, "Failed to disable regulator: %d\n", ret); @@ -123,7 +124,8 @@ static int aw2013_chip_enable(struct aw2013 *chip) if (chip->enabled) return 0; - ret = regulator_enable(chip->vcc_regulator); + ret = regulator_bulk_enable(ARRAY_SIZE(chip->regulators), + chip->regulators); if (ret) { dev_err(&chip->client->dev, "Failed to enable regulator: %d\n", ret); @@ -348,16 +350,20 @@ static int aw2013_probe(struct i2c_client *client) goto error; } - chip->vcc_regulator = devm_regulator_get(&client->dev, "vcc"); - ret = PTR_ERR_OR_ZERO(chip->vcc_regulator); - if (ret) { + chip->regulators[0].supply = "vcc"; + chip->regulators[1].supply = "vddio"; + ret = devm_regulator_bulk_get(&client->dev, + ARRAY_SIZE(chip->regulators), + chip->regulators); + if (ret < 0) { if (ret != -EPROBE_DEFER) dev_err(&client->dev, "Failed to request regulator: %d\n", ret); goto error; } - ret = regulator_enable(chip->vcc_regulator); + ret = regulator_bulk_enable(ARRAY_SIZE(chip->regulators), + chip->regulators); if (ret) { dev_err(&client->dev, "Failed to enable regulator: %d\n", ret); @@ -382,7 +388,8 @@ static int aw2013_probe(struct i2c_client *client) if (ret < 0) goto error_reg; - ret = regulator_disable(chip->vcc_regulator); + ret = regulator_bulk_disable(ARRAY_SIZE(chip->regulators), + chip->regulators); if (ret) { dev_err(&client->dev, "Failed to disable regulator: %d\n", ret); @@ -394,7 +401,8 @@ static int aw2013_probe(struct i2c_client *client) return 0; error_reg: - regulator_disable(chip->vcc_regulator); + regulator_bulk_disable(ARRAY_SIZE(chip->regulators), + chip->regulators); error: mutex_destroy(&chip->mutex);