Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp2620457rdh; Wed, 27 Sep 2023 07:59:10 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHeURLckfC+xzoYho83HR5/OI+ITpUZHKMcqPV03U6+zHkbdWs45rYx8w3twDzfJoEdsh9p X-Received: by 2002:a17:90a:3181:b0:267:eeee:ab17 with SMTP id j1-20020a17090a318100b00267eeeeab17mr1875810pjb.45.1695826750010; Wed, 27 Sep 2023 07:59:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695826749; cv=none; d=google.com; s=arc-20160816; b=fHi8G33BMN188jL1z/3M2JulrNr5izguFTdQPGyGBo39Sz7xCKpCj8Hsuzjp0DUrNz qEVMBFS2xWEKaEQKY9xTAysAor5DLUW8DCutb6rrxdLCy5RJ+1LeBcwgEimSWGtQGrzH YXV5zJ0H+FTHPXMLCzLvi1M+VpXAo0pgOuW/CQ4keXsKlQkCnHT9CDIvtw2ds1+LSVbp p+3DmWKHyY9QWs8db1iygI4xoCTIkmF5uyymBW26Taj4hlUZGYBWrNnaVPGStOMiUrDp S9dOfQrXiGlYB3fnEEy5YJJ2cSlLEVO/MqV9mPNAsNxMtMeG/U8n1YvNNcyNhDYPzzlP FeNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=JZHfUTnIi/+tYMD4CQDLq6wn6RnNFZ3TBrKVNMLL2a0=; fh=sMjpDFA1Q7/h6xOS+BKZodh7fSEF3v1UDww2hZ89gr4=; b=t1lnjuhPAXKGAJhQJS40oYTbCAAnw9EDGsxIYbQdA3Oo2CthUonBkPi9EkXgDkrx/l uCbyuRdL5IPJDaM95ncHTtdKAVeg19vjivs3ObY31tzJW9HDFJfwYavy/hancecxCCVy dXj5wz6SwnBtmXTTUMtwnv8gLnprKa+sCZDsGrghOxCi8H1ennpVDlRq34lX0jZFEK97 YjsaZRU8MWcEDTH0VJM1pWhnE+ld8GO9SU8rjIsWim2o+npd2mXYtEzwUPj/YGd+E4Q3 Ws6VtO+0yQoUfz4jBnlTgFHK5apakpJHYtqkT8FhnD1jvDwMa0dUlW8jWYjWUTcWuw0c sfVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=NDqKIxaV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id pg1-20020a17090b1e0100b00262f7dccaecsi17164831pjb.170.2023.09.27.07.59.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Sep 2023 07:59:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=NDqKIxaV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 5300D8112ABD; Wed, 27 Sep 2023 02:25:15 -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 S230355AbjI0JY5 (ORCPT + 99 others); Wed, 27 Sep 2023 05:24:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60602 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230146AbjI0JY4 (ORCPT ); Wed, 27 Sep 2023 05:24:56 -0400 Received: from mail-oa1-x30.google.com (mail-oa1-x30.google.com [IPv6:2001:4860:4864:20::30]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B301792; Wed, 27 Sep 2023 02:24:55 -0700 (PDT) Received: by mail-oa1-x30.google.com with SMTP id 586e51a60fabf-1dc863efb61so5639607fac.0; Wed, 27 Sep 2023 02:24:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695806695; x=1696411495; darn=vger.kernel.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=JZHfUTnIi/+tYMD4CQDLq6wn6RnNFZ3TBrKVNMLL2a0=; b=NDqKIxaVxokp6ySLmgEFP7mxhuv6TbdvxX/1FL9bwGsr6XxZnJWG+Z3zMPFaDmrKa9 lffZhmPcsbd2YotZNxCvOAh05stm/llPg50M8viYrH8GL8VWFLVrvPfnBMPCbtFGkKj+ BV4Vr7JX0eU1Gxebo9RB6j+ewhfipso4KwdTZdTG5caCQk6xHnnP+zZEATl044p2TnQR q6UETkqq34lhNn5vct7pskr/2U5qSWsQQfg8uVvtA+XkpF7kTxMu6eUUx2/JcIdUhQjw ntbkz1i5xMZ6f+oiwXhsAvo5IWiybaY7LzMALR9e415GK8Jqb5/KjO3NWhwVxxh9S3uF 09TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695806695; x=1696411495; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JZHfUTnIi/+tYMD4CQDLq6wn6RnNFZ3TBrKVNMLL2a0=; b=Gg3y3D0UEC9usau9xzghKKdvtC7Fkpio+FjMIBTBvVi/6NgeLfCOJRh1umoeiJy9SB XK+O2guZVli4/mrnXkExgl51yEkSoXCmo0aWkGnZKDjwe+m9NoCTVQGnwlTlLAI/KFW7 w+9zTXfks8776gSzvjweJiZdCooHN8ACZduL1AmOF1ZjJ2NjRS0ffkKB3neVBKhxcOLp 4lf3gPNne2np1UlZI7pEgZxxLTcm47ssg1z4r4adQeVouXGrHDGmuHI5NHm2D7UXumUb RyxO0vl024j5gG/9BJ1D2r+3je9QKx/DLwHSZ/Q/geMXruzxUr09oiE45lIgZ5zw3IDV CGQQ== X-Gm-Message-State: AOJu0YxWfJbQR5fF2+5nQzlzrsEm3gHuag6+6gW3uhfSyP9esuUG1vYO pLLfeDqV27zIW35jlSmSBss+1JEDpl6MHKxr6sU= X-Received: by 2002:a05:6870:5609:b0:1d5:af57:e916 with SMTP id m9-20020a056870560900b001d5af57e916mr1914039oao.16.1695806694787; Wed, 27 Sep 2023 02:24:54 -0700 (PDT) MIME-Version: 1.0 References: <20230921122527.15261-1-Wenhua.Lin@unisoc.com> <20230921122527.15261-2-Wenhua.Lin@unisoc.com> <9dd68b0e-e36a-b87c-e66d-586f2442da6c@linux.alibaba.com> In-Reply-To: <9dd68b0e-e36a-b87c-e66d-586f2442da6c@linux.alibaba.com> From: Chunyan Zhang Date: Wed, 27 Sep 2023 17:24:17 +0800 Message-ID: Subject: Re: [PATCH V2 1/2] gpio: pmic-eic-sprd: Two-dimensional arrays maintain pmic eic To: Baolin Wang Cc: Wenhua Lin , Linus Walleij , Andy Shevchenko , Bartosz Golaszewski , Orson Zhai , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, wenhua lin , Xiongpeng Wu Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, 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: 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, 27 Sep 2023 02:25:15 -0700 (PDT) On Wed, 27 Sept 2023 at 17:04, Baolin Wang wrote: > > > > On 9/21/2023 8:25 PM, Wenhua Lin wrote: > > A bank PMIC EIC contains 16 EICs, and the operating registers > > are BIT0-BIT15, such as BIT0 of the register operated by EIC0. > > Using the one-dimensional array reg[CACHE_NR_REGS] for maintenance > > will cause the configuration of other EICs to be affected when > > operating a certain EIC. In order to solve this problem, the register > > operation bits of each PMIC EIC are maintained through the two-dimensional > > array reg[SPRD_PMIC_EIC_NR][CACHE_NR_REGS] to avoid mutual interference. > > LGTM. And this also deserves a Fixes tag. Do we really need a two-dimensional array to save 16-bit value? > Reviewed-by: Baolin Wang > > > Signed-off-by: Wenhua Lin > > --- > > drivers/gpio/gpio-pmic-eic-sprd.c | 21 +++++++++++---------- > > 1 file changed, 11 insertions(+), 10 deletions(-) > > > > diff --git a/drivers/gpio/gpio-pmic-eic-sprd.c b/drivers/gpio/gpio-pmic-eic-sprd.c > > index c3e4d90f6b18..442968bb2490 100644 > > --- a/drivers/gpio/gpio-pmic-eic-sprd.c > > +++ b/drivers/gpio/gpio-pmic-eic-sprd.c > > @@ -57,7 +57,7 @@ struct sprd_pmic_eic { > > struct gpio_chip chip; > > struct regmap *map; > > u32 offset; > > - u8 reg[CACHE_NR_REGS]; > > + u8 reg[SPRD_PMIC_EIC_NR][CACHE_NR_REGS]; > > struct mutex buslock; > > int irq; > > }; > > @@ -151,8 +151,8 @@ static void sprd_pmic_eic_irq_mask(struct irq_data *data) > > struct sprd_pmic_eic *pmic_eic = gpiochip_get_data(chip); > > u32 offset = irqd_to_hwirq(data); > > > > - pmic_eic->reg[REG_IE] = 0; > > - pmic_eic->reg[REG_TRIG] = 0; > > + pmic_eic->reg[offset][REG_IE] = 0; > > + pmic_eic->reg[offset][REG_TRIG] = 0; > > > > gpiochip_disable_irq(chip, offset); > > } > > @@ -165,8 +165,8 @@ static void sprd_pmic_eic_irq_unmask(struct irq_data *data) > > > > gpiochip_enable_irq(chip, offset); > > > > - pmic_eic->reg[REG_IE] = 1; > > - pmic_eic->reg[REG_TRIG] = 1; > > + pmic_eic->reg[offset][REG_IE] = 1; > > + pmic_eic->reg[offset][REG_TRIG] = 1; > > } > > > > static int sprd_pmic_eic_irq_set_type(struct irq_data *data, > > @@ -174,13 +174,14 @@ static int sprd_pmic_eic_irq_set_type(struct irq_data *data, > > { > > struct gpio_chip *chip = irq_data_get_irq_chip_data(data); > > struct sprd_pmic_eic *pmic_eic = gpiochip_get_data(chip); > > + u32 offset = irqd_to_hwirq(data); > > > > switch (flow_type) { > > case IRQ_TYPE_LEVEL_HIGH: > > - pmic_eic->reg[REG_IEV] = 1; > > + pmic_eic->reg[offset][REG_IEV] = 1; > > break; > > case IRQ_TYPE_LEVEL_LOW: > > - pmic_eic->reg[REG_IEV] = 0; > > + pmic_eic->reg[offset][REG_IEV] = 0; > > break; > > case IRQ_TYPE_EDGE_RISING: > > case IRQ_TYPE_EDGE_FALLING: > > @@ -222,15 +223,15 @@ static void sprd_pmic_eic_bus_sync_unlock(struct irq_data *data) > > sprd_pmic_eic_update(chip, offset, SPRD_PMIC_EIC_IEV, 1); > > } else { > > sprd_pmic_eic_update(chip, offset, SPRD_PMIC_EIC_IEV, > > - pmic_eic->reg[REG_IEV]); > > + pmic_eic->reg[offset][REG_IEV]); > > } > > > > /* Set irq unmask */ > > sprd_pmic_eic_update(chip, offset, SPRD_PMIC_EIC_IE, > > - pmic_eic->reg[REG_IE]); > > + pmic_eic->reg[offset][REG_IE]); > > /* Generate trigger start pulse for debounce EIC */ > > sprd_pmic_eic_update(chip, offset, SPRD_PMIC_EIC_TRIG, > > - pmic_eic->reg[REG_TRIG]); > > + pmic_eic->reg[offset][REG_TRIG]); > > > > mutex_unlock(&pmic_eic->buslock); > > }