Message ID | 20231018182943.18700-5-ddrokosov@salutedevices.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4989502vqb; Wed, 18 Oct 2023 11:31:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHgEjJ1z6bC544vlFg/LbKiKnl+10SZ/rtcxzpFVh7ofLf2J4l1+t9GqOJeUPXjGDxJAuw2 X-Received: by 2002:a05:6a20:a113:b0:14d:f41c:435a with SMTP id q19-20020a056a20a11300b0014df41c435amr6394469pzk.39.1697653886853; Wed, 18 Oct 2023 11:31:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697653886; cv=none; d=google.com; s=arc-20160816; b=WZFieCJvIlOOoRfDQ4hGbLJ347NoRQ8eBbRB06d1JaMBwO829C/4AtJJsYj0Joc5BD ogtlfl9r417z7D52vAg2F/GCSfkvqIXhg32doeJ6g9Hb5JIEg+VIW1NTj1S9Qs0Ysx3e DQKsnQE1X8HhaIOYvhGYGL5goG05JFin8T6mWlehpL41+m2VXyN08zkQcDDUFIQ31mNl bLpq3Hyf+kkA15guHcniEicL9KCWIwU+4amFjGzggJvgvDZ+vCE0qldZ0RHi2fhCYG77 ZqSka5uaYYSeKaqGxu+DOklcb0N1hKsufdNw8aUW7ZeuS8v9P4f2roJLIUGwUqoT0m4e w5VQ== 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:dkim-filter; bh=OfG8v4a23hHDZuUDnotHJWVQQ6vM9oZBqvofP9QPn0s=; fh=sORWI5m16YEVk6NuaHBH7AzDgvChSOROlmEzxQvCLqs=; b=wtOURUEIg3KN3yDDwjooUWoKLF2Soqg8T2pv1A/93ILp/jLSI8N3mscPXRQ1dNu4OX gMhfSEtU4nCfgHF4rJCADxUBYvOedt1eqgyYvlAEw4GGqq+7Jq9BHWqwq+g1h8ZPlCJb g5tm6VkuIFWL8COTpJG8/8VoFtsrmjDnvpwRA7IynfO34JhHoD/cPZj0rzzMJmJ2RQK1 SZ4Fw/yPTQA3fx+hMNP+FKU75GZNT+KRHV/xPYjoLV/L++1G8FnxXk2CuTLMw/e4XdLX f8MKVmCpCposxPhSLIU14YM9UKN1WopZ1Rlr67k7noq/UGFBrBeczoW/4HtrEArwpsVJ 1QQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@salutedevices.com header.s=mail header.b=FhI1AqwL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=salutedevices.com Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id x23-20020a17090a789700b00276c4e7b5e2si389126pjk.146.2023.10.18.11.31.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Oct 2023 11:31:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@salutedevices.com header.s=mail header.b=FhI1AqwL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=salutedevices.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 6C35980B5A05; Wed, 18 Oct 2023 11:31:23 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344907AbjJRSaJ (ORCPT <rfc822;zwp10758@gmail.com> + 24 others); Wed, 18 Oct 2023 14:30:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50932 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231492AbjJRSaE (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Wed, 18 Oct 2023 14:30:04 -0400 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8220111C; Wed, 18 Oct 2023 11:30:01 -0700 (PDT) Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id 16D1212000E; Wed, 18 Oct 2023 21:30:00 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru 16D1212000E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salutedevices.com; s=mail; t=1697653800; bh=OfG8v4a23hHDZuUDnotHJWVQQ6vM9oZBqvofP9QPn0s=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=FhI1AqwLK/GPYBS3bCF7MlEnXxxf0zPrlJOsbr6dQ8BYPNXerpRtdF+D7heYFaZ4/ jl02B9cbZMuRqW5EegSB1Lg0r4zMaQWkIj/BgNdk0TObkBV3OOpFXTk7xcS7ERXd9+ MMSPY/pIXGXsw7LJjyJKaAHmAe7g1KoJ2YbGKwhpQkuw1IK4SCgtPPLE5yVDqcFRTB NGq1RFm7C9HxSGts8A2HctsNbMb4x+GhkS0p8wqvOgPkX+RevIXL7SE2eRvrR3eD2n pmbVgNKeNOMlD2KsL3/PKNLm4Ua4lb7ZQoWALqIM0yVbsnKh0e43vOfCzeg3pXqNX/ 6DOx6XqLCqfvQ== Received: from p-i-exch-sc-m01.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Wed, 18 Oct 2023 21:29:59 +0300 (MSK) Received: from localhost.localdomain (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.37; Wed, 18 Oct 2023 21:29:55 +0300 From: Dmitry Rokosov <ddrokosov@salutedevices.com> To: <lee@kernel.org>, <pavel@ucw.cz>, <robh+dt@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>, <conor+dt@kernel.org>, <andy.shevchenko@gmail.com> CC: <kernel@sberdevices.ru>, <rockosov@gmail.com>, <devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-leds@vger.kernel.org>, George Stark <gnstark@salutedevices.com>, Dmitry Rokosov <ddrokosov@salutedevices.com> Subject: [PATCH v2 04/11] leds: aw200xx: calculate dts property display_rows in driver Date: Wed, 18 Oct 2023 21:29:36 +0300 Message-ID: <20231018182943.18700-5-ddrokosov@salutedevices.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20231018182943.18700-1-ddrokosov@salutedevices.com> References: <20231018182943.18700-1-ddrokosov@salutedevices.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [100.64.160.123] X-ClientProxiedBy: p-i-exch-sc-m02.sberdevices.ru (172.16.192.103) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 180713 [Oct 18 2023] X-KSMG-AntiSpam-Version: 6.0.0.2 X-KSMG-AntiSpam-Envelope-From: ddrokosov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 541 541 6f62a06a82e8ec968d29b8e7c7bba6aeceb34f57, {Tracking_from_domain_doesnt_match_to}, 127.0.0.199:7.1.2;p-i-exch-sc-m01.sberdevices.ru:7.1.1,5.0.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;100.64.160.123:7.1.2;salutedevices.com:7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2023/10/18 17:21:00 #22224798 X-KSMG-AntiVirus-Status: Clean, skipped X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Wed, 18 Oct 2023 11:31:23 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780119121723163046 X-GMAIL-MSGID: 1780119121723163046 |
Series |
leds: aw200xx: several driver updates
|
|
Commit Message
Dmitry Rokosov
Oct. 18, 2023, 6:29 p.m. UTC
From: George Stark <gnstark@salutedevices.com> Get rid of device tree property "awinic,display-rows" and calculate it in driver using led definition nodes. display-row actually means number of current switches and depends on how leds are connected to the device. Signed-off-by: George Stark <gnstark@salutedevices.com> Signed-off-by: Dmitry Rokosov <ddrokosov@salutedevices.com> --- drivers/leds/leds-aw200xx.c | 39 +++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-)
Comments
On Wed, Oct 18, 2023 at 9:30 PM Dmitry Rokosov <ddrokosov@salutedevices.com> wrote: > > From: George Stark <gnstark@salutedevices.com> > > Get rid of device tree property "awinic,display-rows" and calculate it > in driver using led definition nodes. display-row actually means number > of current switches and depends on how leds are connected to the device. Still the commit message does not answer the question why it's safe for the users that have this property enabled in their DTBs (note B letter). ... > + device_for_each_child_node(dev, child) { > + u32 source; > + int ret; > + > + ret = fwnode_property_read_u32(child, "reg", &source); > + if (ret || source >= chip->cdef->channels) Perhaps a warning? dev_warn(dev, "Unable to read from %pfw or apply a source channel number\n", child); > + continue; > + > + max_source = max(max_source, source); > + } ... > + chip->display_rows = max_source / chip->cdef->display_size_columns + 1; > + if (!chip->display_rows) { > + dev_err(dev, "No valid led definitions found\n"); > + return -EINVAL; So, this part is in ->probe() flow only, correct? If so, return dev_err_probe(...); > + } ... > + if (aw200xx_probe_get_display_rows(dev, chip)) > + return -EINVAL; Why is the error code shadowed?
Hello Andy On 10/19/23 12:01, Andy Shevchenko wrote: > On Wed, Oct 18, 2023 at 9:30 PM Dmitry Rokosov > <ddrokosov@salutedevices.com> wrote: >> >> From: George Stark <gnstark@salutedevices.com> >> >> Get rid of device tree property "awinic,display-rows" and calculate it >> in driver using led definition nodes. display-row actually means number >> of current switches and depends on how leds are connected to the device. > > Still the commit message does not answer the question why it's safe > for the users that have this property enabled in their DTBs (note B > letter). > > ... > >> + device_for_each_child_node(dev, child) { >> + u32 source; >> + int ret; >> + >> + ret = fwnode_property_read_u32(child, "reg", &source); >> + if (ret || source >= chip->cdef->channels) > > Perhaps a warning? > > dev_warn(dev, "Unable to read from %pfw or apply a source channel > number\n", child); I skipped the warning intentionally because we have just the same loop several steps below and with the same check. There we have all proper warnings and aw200xx_probe_get_display_rows was intended to be short and lightweight. I'll redesign it to be even more simple. > >> + continue; >> + >> + max_source = max(max_source, source); >> + } > > ... > >> + chip->display_rows = max_source / chip->cdef->display_size_columns + 1; >> + if (!chip->display_rows) { >> + dev_err(dev, "No valid led definitions found\n"); >> + return -EINVAL; > > So, this part is in ->probe() flow only, correct? If so, > return dev_err_probe(...); > >> + } > > ... > >> + if (aw200xx_probe_get_display_rows(dev, chip)) >> + return -EINVAL; > > Why is the error code shadowed? >
diff --git a/drivers/leds/leds-aw200xx.c b/drivers/leds/leds-aw200xx.c index 911c3154585f..a2a31b8e623e 100644 --- a/drivers/leds/leds-aw200xx.c +++ b/drivers/leds/leds-aw200xx.c @@ -379,6 +379,31 @@ static void aw200xx_disable(const struct aw200xx *const chip) return gpiod_set_value_cansleep(chip->hwen, 0); } +static int aw200xx_probe_get_display_rows(struct device *dev, struct aw200xx *chip) +{ + struct fwnode_handle *child; + u32 max_source = 0; + + device_for_each_child_node(dev, child) { + u32 source; + int ret; + + ret = fwnode_property_read_u32(child, "reg", &source); + if (ret || source >= chip->cdef->channels) + continue; + + max_source = max(max_source, source); + } + + chip->display_rows = max_source / chip->cdef->display_size_columns + 1; + if (!chip->display_rows) { + dev_err(dev, "No valid led definitions found\n"); + return -EINVAL; + } + + return 0; +} + static int aw200xx_probe_fw(struct device *dev, struct aw200xx *chip) { struct fwnode_handle *child; @@ -386,18 +411,8 @@ static int aw200xx_probe_fw(struct device *dev, struct aw200xx *chip) int ret; int i; - ret = device_property_read_u32(dev, "awinic,display-rows", - &chip->display_rows); - if (ret) - return dev_err_probe(dev, ret, - "Failed to read 'display-rows' property\n"); - - if (!chip->display_rows || - chip->display_rows > chip->cdef->display_size_rows_max) { - return dev_err_probe(dev, ret, - "Invalid leds display size %u\n", - chip->display_rows); - } + if (aw200xx_probe_get_display_rows(dev, chip)) + return -EINVAL; current_max = aw200xx_imax_from_global(chip, AW200XX_IMAX_MAX_uA); current_min = aw200xx_imax_from_global(chip, AW200XX_IMAX_MIN_uA);