Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp2190063rdb; Thu, 21 Sep 2023 10:59:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEy31Eg45iAUSBA8DygqcChXoAEZ1bodYVr4BNYWJ9uW//l4k+WWO9ROZ52VBKdefNUjrCZ X-Received: by 2002:a05:6a00:1596:b0:68f:bb16:d16a with SMTP id u22-20020a056a00159600b0068fbb16d16amr558671pfk.5.1695319192180; Thu, 21 Sep 2023 10:59:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695319192; cv=none; d=google.com; s=arc-20160816; b=sBXwpPTJ4kE66/HrpD2JAKoKC7WcDUDqu1RXGEvNBpV42Iyucu6WtJQtwDxdeyJeTu GdQ9YjaMc6wLdq2beLjLqISdNtNtGVnSD7PZm8OsV4+a2BTc2PB3n5M/TrxxDZPSxVCK MWd+cQwKvaCPqLgoaErPZpVSh/7sJxDBKK+iianti6kYERq1y6KqLckLRTncXch4Be7U 3CuE7tlp58tvTqXjT5cBgWH1w9J5ZdUvwnCp8fLM9V0JJ9YHUhIX5yDSayDaL6i5XC6s 4vYPTylk/a+I4MY7QQO9fCWEq5A7MeC/ZFfz8ECQKWKhhw2oOrh88ZoVaDZ1Ezsm1EJH TjiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=1vFnctztbmDzS3pr2LRyJHRN5yvukZL9z10LqItRl8U=; fh=C9TL9yCnGisUiZfdvbqmpU1FLQkakKnDf/rl0GO1YOw=; b=Pn8Q7wFbcAJSkR1UlX97gRpDYORfB5Bg05kAbzLxlhHkTtAy1BXVmqS2nXMdP1wD2r mWfnQ/N/XWF+rAMqZ9YC6Un377wmSWdmRmIvdNSXQvtYyAG1aWFO0Kh2U+DXGMn/AHGk G/U6f4Ddo8TE+zgUdj/Wv0sTK3LO4w19eh0Z9LF9uZzqReunTF+lLjPzIc+9+k9tyOcV Vp1+lkXgFlLrmKEweKTU720JrmksI1XDwFS3brnhb7oNDZ/IV6V5ixi7EiIYOdp4aJkT N31wzEyWj3yyIuVKdy/2O1f768y5yuZBlvdga34bdfbsktl9yq0GCeBgbdFfwJ4+fjhg S/qw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id ct7-20020a056a000f8700b0068fe2453ab6si1840902pfb.353.2023.09.21.10.59.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Sep 2023 10:59:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id EC0C2803C6A5; Thu, 21 Sep 2023 10:50:15 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229499AbjIURuL (ORCPT + 99 others); Thu, 21 Sep 2023 13:50:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229886AbjIURt6 (ORCPT ); Thu, 21 Sep 2023 13:49:58 -0400 Received: from SHSQR01.spreadtrum.com (mx1.unisoc.com [222.66.158.135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 002BF585EF for ; Thu, 21 Sep 2023 10:19:27 -0700 (PDT) Received: from SHSQR01.spreadtrum.com (localhost [127.0.0.2] (may be forged)) by SHSQR01.spreadtrum.com with ESMTP id 38L92Pa5067742 for ; Thu, 21 Sep 2023 17:02:25 +0800 (+08) (envelope-from Wenhua.Lin@unisoc.com) Received: from dlp.unisoc.com ([10.29.3.86]) by SHSQR01.spreadtrum.com with ESMTP id 38L90k9T061807; Thu, 21 Sep 2023 17:00:46 +0800 (+08) (envelope-from Wenhua.Lin@unisoc.com) Received: from SHDLP.spreadtrum.com (shmbx06.spreadtrum.com [10.0.1.11]) by dlp.unisoc.com (SkyGuard) with ESMTPS id 4Rrq6G2Ngqz2SZykd; Thu, 21 Sep 2023 16:57:26 +0800 (CST) Received: from xm9614pcu.spreadtrum.com (10.13.2.29) by shmbx06.spreadtrum.com (10.0.1.11) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Thu, 21 Sep 2023 17:00:45 +0800 From: Wenhua Lin To: Linus Walleij , Andy Shevchenko , Bartosz Golaszewski CC: Orson Zhai , Baolin Wang , Chunyan Zhang , , , wenhua lin , Wenhua Lin , Xiongpeng Wu Subject: [PATCH V2 3/4] gpio: sprd: Modify the calculation method of eic number Date: Thu, 21 Sep 2023 17:00:26 +0800 Message-ID: <20230921090027.11136-4-Wenhua.Lin@unisoc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230921090027.11136-1-Wenhua.Lin@unisoc.com> References: <20230921090027.11136-1-Wenhua.Lin@unisoc.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.13.2.29] X-ClientProxiedBy: SHCAS01.spreadtrum.com (10.0.1.201) To shmbx06.spreadtrum.com (10.0.1.11) X-MAIL: SHSQR01.spreadtrum.com 38L90k9T061807 X-Spam-Status: No, score=-0.8 required=5.0 tests=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 fry.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 (fry.vger.email [0.0.0.0]); Thu, 21 Sep 2023 10:50:16 -0700 (PDT) When the soc changes, the corresponding gpio-eic-sprd.c code needs to be modified, and the corresponding Document must also be modified, which is quite troublesome. To avoid modifying the driver file, the number of EICs is automatically calculated by matching dts nodes. Fixes: 2788938b7946 ("gpio: eic-sprd: Make the irqchip immutable") Signed-off-by: Wenhua Lin --- drivers/gpio/gpio-eic-sprd.c | 43 ++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/drivers/gpio/gpio-eic-sprd.c b/drivers/gpio/gpio-eic-sprd.c index 96f1c7fd3988..e85addbdf8aa 100644 --- a/drivers/gpio/gpio-eic-sprd.c +++ b/drivers/gpio/gpio-eic-sprd.c @@ -100,33 +100,32 @@ struct sprd_eic { struct sprd_eic_variant_data { enum sprd_eic_type type; - u32 num_eics; }; +#define SPRD_EIC_VAR_DATA(soc_name) \ +static const struct sprd_eic_variant_data soc_name##_eic_dbnc_data = { \ + .type = SPRD_EIC_DEBOUNCE, \ +}; \ + \ +static const struct sprd_eic_variant_data soc_name##_eic_latch_data = { \ + .type = SPRD_EIC_LATCH, \ +}; \ + \ +static const struct sprd_eic_variant_data soc_name##_eic_async_data = { \ + .type = SPRD_EIC_ASYNC, \ +}; \ + \ +static const struct sprd_eic_variant_data soc_name##_eic_sync_data = { \ + .type = SPRD_EIC_SYNC, \ +} + +SPRD_EIC_VAR_DATA(sc9860); + static const char *sprd_eic_label_name[SPRD_EIC_MAX] = { "eic-debounce", "eic-latch", "eic-async", "eic-sync", }; -static const struct sprd_eic_variant_data sc9860_eic_dbnc_data = { - .type = SPRD_EIC_DEBOUNCE, - .num_eics = 8, -}; - -static const struct sprd_eic_variant_data sc9860_eic_latch_data = { - .type = SPRD_EIC_LATCH, - .num_eics = 8, -}; - -static const struct sprd_eic_variant_data sc9860_eic_async_data = { - .type = SPRD_EIC_ASYNC, - .num_eics = 8, -}; - -static const struct sprd_eic_variant_data sc9860_eic_sync_data = { - .type = SPRD_EIC_SYNC, - .num_eics = 8, -}; static inline void __iomem *sprd_eic_offset_base(struct sprd_eic *sprd_eic, unsigned int bank) @@ -595,6 +594,7 @@ static int sprd_eic_probe(struct platform_device *pdev) struct sprd_eic *sprd_eic; struct resource *res; int ret, i; + u16 num_banks = 0; pdata = of_device_get_match_data(&pdev->dev); if (!pdata) { @@ -625,12 +625,13 @@ static int sprd_eic_probe(struct platform_device *pdev) break; sprd_eic->base[i] = devm_ioremap_resource(&pdev->dev, res); + num_banks++; if (IS_ERR(sprd_eic->base[i])) return PTR_ERR(sprd_eic->base[i]); } sprd_eic->chip.label = sprd_eic_label_name[sprd_eic->type]; - sprd_eic->chip.ngpio = pdata->num_eics; + sprd_eic->chip.ngpio = num_banks * SPRD_EIC_PER_BANK_NR; sprd_eic->chip.base = -1; sprd_eic->chip.parent = &pdev->dev; sprd_eic->chip.direction_input = sprd_eic_direction_input; -- 2.17.1