From patchwork Thu Mar 16 06:11:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Quanyang Wang X-Patchwork-Id: 1757879 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=windriver.com header.i=@windriver.com header.a=rsa-sha256 header.s=PPS06212021 header.b=Oq+liX4v; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PcmXy2TdKz246q for ; Thu, 16 Mar 2023 23:19:46 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 2F2A485C1A; Thu, 16 Mar 2023 13:19:16 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=windriver.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=windriver.com header.i=@windriver.com header.b="Oq+liX4v"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 12FC185C3C; Thu, 16 Mar 2023 07:12:27 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 8B5DF85C14 for ; Thu, 16 Mar 2023 07:12:24 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=windriver.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=prvs=24395ef010=quanyang.wang@windriver.com Received: from pps.filterd (m0250810.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32G69q8P030939; Wed, 15 Mar 2023 23:12:09 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=PPS06212021; bh=ySwzBmqGr3yJe2qb6eWqfTVUn2WMW5I7Zh+1Q1kKACY=; b=Oq+liX4vbhXPJUKlCURqYlAbbe9GCCfPia5gpSsJsXxGRYDDq2xlZFv1YT8q466xRmUz keO8xmwNW835gjzrBaJac+VX0Vruu/GyOXuLFVfDof0/W3yNkgXxpR7o/95rfNaOTT+W EguWUClOnf2Z2pg1/R9ggLZ8c9WrhCULsBuP0JZsWBA/67YBDSIosN0ebDKbQcOuNnmi S6RzmHvswM3DTi0MTXq+w6rcMEn6TxGrOxXPwTLeZMjqMDzDaZ81bOiR2YoRHKrS2sJz LWNt6dQL765NblUaifTOdNVQp2M8DJ1Arx1Af4qn6oVApvoo1LtU109YsSmz7S5Kxxi1 sg== Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2168.outbound.protection.outlook.com [104.47.58.168]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 3pbqksg877-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 15 Mar 2023 23:12:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K/3Q5JZGrPI0GOgkdU+iKg8vSWP1R+E2rgX1yTjSiVWkIY8CRF5DaMeNqaUTywgE1VhEYCyc27QjPdw8geIawxf4+6GMdd5jvXqColZ13SfupZgPkegazFnCdE3wp/MIrkARNlAv2JWkEJ2ktXxODEBcma0f3uIHav1BxEOVaDeqzWm4E4yN9JeT2cJvP13aRWLEJGV8GarZaAdTymAmB98/8oqnIf/LuJ/SjivdDyO63qWpbiZocQ7esFigBHqLgsej6x0du2TkBU8h+w3WJ1932L3xAmmOnS3UGh/9vnA+hZWqJ3h6Iph92G2aot4r5u6iy6mFVaYQ+ZOVDupa1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ySwzBmqGr3yJe2qb6eWqfTVUn2WMW5I7Zh+1Q1kKACY=; b=kR560bHdCzHcUzX1pCRZK7M9yQomK2bDL/QLQ8w4THMdPpJnGMIqcqY57+lAgBKSsdLHFkYmD8mK6bYXhVzzeQbgZMYbKUn2bimAchRF6Ba7LIZEiy7tLgylEK8w9d5oKIY5WQmB0BfUgLI+VjjJs6OeQ9gAaXVPXoJcYVCUZPs/vPaiadaEYd8PqojW5bly6QLULR81sxQyM1O+lY4y5ivu0lriVCqNqBWbIGuIfhs436ujiFWnPEtGJWrNqzCa/EdXESkQH/WypOSeCCw0pE19MzSY4gfSYe4nPEbtgTvZX6ERtlRSzGXt4Y9Csnz2JaR2QK7xqIccnnTM66RKmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=windriver.com; dmarc=pass action=none header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none Received: from SJ0PR11MB5630.namprd11.prod.outlook.com (2603:10b6:a03:3bb::6) by SA3PR11MB7486.namprd11.prod.outlook.com (2603:10b6:806:314::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.29; Thu, 16 Mar 2023 06:12:05 +0000 Received: from SJ0PR11MB5630.namprd11.prod.outlook.com ([fe80::1bca:a63c:ce72:fdbd]) by SJ0PR11MB5630.namprd11.prod.outlook.com ([fe80::1bca:a63c:ce72:fdbd%6]) with mapi id 15.20.6178.029; Thu, 16 Mar 2023 06:12:05 +0000 From: quanyang.wang@windriver.com To: Simon Glass , Michael Walle , Stefan Roese , pali@kernel.org, Marek Vasut Cc: u-boot@lists.denx.de, Quanyang Wang Subject: [PATCH] pinctrl: fix pinctrl_gpio_get_pinctrl_and_offset for gpio-ranges array Date: Thu, 16 Mar 2023 14:11:46 +0800 Message-Id: <20230316061146.1556761-1-quanyang.wang@windriver.com> X-Mailer: git-send-email 2.36.1 X-ClientProxiedBy: SI2PR01CA0024.apcprd01.prod.exchangelabs.com (2603:1096:4:192::20) To SJ0PR11MB5630.namprd11.prod.outlook.com (2603:10b6:a03:3bb::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR11MB5630:EE_|SA3PR11MB7486:EE_ X-MS-Office365-Filtering-Correlation-Id: 838ca599-d010-44d3-76fc-08db25e55db8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yQr2AfThnv5x5S4Epb2DDcwqGjXFcS54kdyqsxvpesDXKFmJCT6dR4Ujh7uSNrEmvQNx3F9bpQu9EK7qtGfuBSCgIEYE9YC/2IFrOrOT9yN8p1uvCQO6QLMX9D/OyQTw4tXR7qnMo6LjyKwzXvz/M3gJB/PmDDsdK5Fwd5GjwAYgYR7d4XPD4sSAVESpSZjU89xmdWS/NEj/TLYQk08CajY7NdmXjEQQc8/2wNi41fEgBMQAYs9WDVQJlM+k+F508w6e1OYiFUVk4rMSqmLZtKEAa04aV33OaCKSitdQvsmuP0nOn3yiyU2JVbCAODDDXcn8GGu1p2JyCGduh3pBoerUQriOlyE9o7S5OIEjULc/Mq9q9GIw2MR1VUHhoylO5EHx6/6r7UI5t2iQlVVxVc2iC6/+drkK1brRg5NvmvVE/eY70dXvY1GFMXDeP7CvoWueBtZbw3jESqW3uPEbz6IGfVvsgpgErp9zIrtMEK8e7F7s+HDJAjTY2TpC5Zr6cTjooargpW/fzxEJl4BUrTu5uZyRCoDlXwkdtkC5bf0QwhBI0moid+Y94KaxWBQbPsmKe1y8n47jeRrv1eLhtn+L0m6M7AfxjFcGLgUW8R/Rnuh6aRj19OHWXMDtYmyYiPLb7wyClIaePbFbEwsVeLCstYux4io7GTsX0u0jp+gSY2s2ldJU3Q6uUJxHyXLeK/YbF0pljBUYThht1tMwQA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR11MB5630.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(346002)(136003)(39860400002)(396003)(366004)(376002)(451199018)(6666004)(107886003)(186003)(478600001)(83380400001)(52116002)(2616005)(6486002)(66556008)(66946007)(66476007)(316002)(110136005)(8676002)(6506007)(1076003)(6512007)(9686003)(26005)(4326008)(41300700001)(8936002)(5660300002)(38350700002)(38100700002)(2906002)(86362001)(36756003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5DCdakO25GVbYGfB4klWdXfRp67J0tOQ96KVo9V8IXMMpColdblhcCoNQZeU6e9ss0UEMbwfiPXClUDe4vlsSa6aaMwwWHQjeQ0I967OEz1eUIbJEbsed+l9/oU4ajttYOT+g1B/dK63YROXudf1rmKylYOqQPIYJBBAJP9/s4l94tuukrBP5VY9e2jIvOeiSfhTRQF1efiPFWhjbLBVy3DnmWKlIyCp2PLc81VF06XHrp/vhBPaGVvCx0EodDxVoZJNoVHdHWA1sZKG4TcZ/d2gyq2GHYDzONNjhoa2mxwfavslZa7GB+DXSHYgs5mHQXfvtv2do08XGSlk6m0IJw7cHg9feAfOL/fCh6nsl3zPCn4MqQwanIWcNRtdb4iDX2cTP2GVvOc1UxWe2oCHf3LzB9KCgiDQFWYUbq7O8ANZtQ2b6Ic7WUdwNDFflrlYLCZLNJBOHbsMdqIWm8JCCJwVqf5DuiZjfC6YJ5apfXJ++oQ8gIoSJwn6yowuMN1SyK6X2vWw7AEXG4gY7VxUgtcojo2FiMg853HNMYf31IuoCY2lyuqcMQWLHQrvahJVW/69pF8J4F61qGXj75mEhHE7NsrIzJL9NkO8f+/PHz/XF79tCUVI7M86o/r1MAf4KD4pUWMECug0d54ZtvwcWBeuaFBX+RB321yJ8s6opTlCLsj9MnhzVQMj1iQv8F+qbQjlD8Kj4YjXTvEs+1AvDbOozfNGdVAgy6pC4oUmcLqUyTvNB3Q471m3NDT0N2SkornbCbj0y2O4SEoVaxiOzvn6i5932Q4SPNfEzrL4L+9YT028wyTVhpyze7/ugSO3ttXiVTFQUfBZA/2DPg3EbsGrA0QomLL/E1GH7eYpmiigmqivalBajKBz/ndP9qxEuevQ2Cys5HI7Zp9dEn/HM1E/5UTHxsc82KNXVXy5QhUqOHnQbg9cd5MdQi6Q/oGugq8yUy5ZeOcXP4csVCJM0++H2eG8KFU5IMa5NtAXHTSQrK4+ASImllVFJ2Mu2qBae6AdKXGJr43GFkWbsM7LlF6nFoVW6fmB+i/sMRLf4UAknT+QR2yeoRwliJLvlI6a4mnk/QJToBCX8g42/b4HuoLcEBGP9YasIW29pquli+THCxqTkPwiBIxn9UAlVIPauPOoOCpwYtIaUIdfiHJkSIM5nTs70V1w6fUpnCDftBjAdOtHZIgk17FztfC2AaDHdfm5aUBkFf1w7OAOgiHLlzdYfV4Y+rQeVqKOBoIWOwD4z/M/LxTHuMdzfO4TPl96XsuHtWgnz0+tj9uCxlRQUmg7yurylksgN6XDRr2qI5VrriwFzW3oVIJJ+l9mWagYZod1ArxcebaRKsyRypAh3mgwTycP395iOrbJnNDRBVLp6us4AFonVhz15YghyFDcyBc2SlIIV1z3AjON343K1ro3EL/oAx2MGYlyJq3jWzvQgLiMKEmtw3wIPXeT3TLBreSRmtZW7/V9XMpBmfYd9TuOoGM4v6xds6B5999NVtBMmwoucjFhEByGg7RclbL8lu2ceiVHrKr2IRPw52M65cqR69W3M1YAlKHCVMDLfxhM56ieH2kF3Q6EUNlBRQJ7rRiZ4uFnRkX47Z/p+e+iFw== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 838ca599-d010-44d3-76fc-08db25e55db8 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5630.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2023 06:12:05.5352 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: j2H43EFDHFADZqskmoGoYTvNatR+zRsWNWBwa86q46no9VPj4uNcL4Xgj28qRKj2p/KL+96NC/r8tVihz6cQWpB9B6wLXWX7VCsSW83TCJ8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR11MB7486 X-Proofpoint-ORIG-GUID: GaJeEsIGSOoRzL9a4BZH2OM35yYV4BAa X-Proofpoint-GUID: GaJeEsIGSOoRzL9a4BZH2OM35yYV4BAa X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-16_04,2023-03-15_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1011 phishscore=0 adultscore=0 suspectscore=0 spamscore=0 malwarescore=0 priorityscore=1501 mlxlogscore=716 bulkscore=0 impostorscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303150002 definitions=main-2303160051 X-Mailman-Approved-At: Thu, 16 Mar 2023 13:18:57 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean From: Quanyang Wang Sometimes a multi-element array is used for "gpio-ranges" property in dts file: qe_pio_e: gpio-controller@1460 { ...... gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>; ...... }; But the function pinctrl_gpio_get_pinctrl_and_offset can't handle this case because the "index" argument passed to dev_read_phandle_with_args is fixed to be "0". Use a loop to traverse the array to fix it. Signed-off-by: Quanyang Wang Signed-off-by: Quanyang Wang --- drivers/pinctrl/pinctrl-uclass.c | 47 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c index 8837726cc1..73dd7b1038 100644 --- a/drivers/pinctrl/pinctrl-uclass.c +++ b/drivers/pinctrl/pinctrl-uclass.c @@ -169,34 +169,33 @@ pinctrl_gpio_get_pinctrl_and_offset(struct udevice *dev, unsigned offset, { struct ofnode_phandle_args args; unsigned gpio_offset, pfc_base, pfc_pins; - int ret; + int ret = 0; + int i = 0; - ret = dev_read_phandle_with_args(dev, "gpio-ranges", NULL, 3, - 0, &args); - if (ret) { - dev_dbg(dev, "%s: dev_read_phandle_with_args: err=%d\n", - __func__, ret); - return ret; - } + while (ret == 0) { + ret = dev_read_phandle_with_args(dev, "gpio-ranges", NULL, 3, + i++, &args); + if (ret) { + dev_dbg(dev, "%s: dev_read_phandle_with_args: err=%d\n", + __func__, ret); + return ret; + } - ret = uclass_get_device_by_ofnode(UCLASS_PINCTRL, - args.node, pctldev); - if (ret) { - dev_dbg(dev, - "%s: uclass_get_device_by_of_offset failed: err=%d\n", - __func__, ret); - return ret; - } + ret = uclass_get_device_by_ofnode(UCLASS_PINCTRL, + args.node, pctldev); + if (ret) { + dev_dbg(dev, + "%s: uclass_get_device_by_of_offset failed: err=%d\n", + __func__, ret); + return ret; + } - gpio_offset = args.args[0]; - pfc_base = args.args[1]; - pfc_pins = args.args[2]; + gpio_offset = args.args[0]; + pfc_base = args.args[1]; + pfc_pins = args.args[2]; - if (offset < gpio_offset || offset > gpio_offset + pfc_pins) { - dev_dbg(dev, - "%s: GPIO can not be mapped to pincontrol pin\n", - __func__); - return -EINVAL; + if (offset >= gpio_offset && offset <= gpio_offset + pfc_pins) + break; } offset -= gpio_offset;