Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2196200/?format=api
{ "id": 2196200, "url": "http://patchwork.ozlabs.org/api/patches/2196200/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260213040852.3340547-3-sherry.sun@nxp.com/", "project": { "id": 28, "url": "http://patchwork.ozlabs.org/api/projects/28/?format=api", "name": "Linux PCI development", "link_name": "linux-pci", "list_id": "linux-pci.vger.kernel.org", "list_email": "linux-pci@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260213040852.3340547-3-sherry.sun@nxp.com>", "list_archive_url": null, "date": "2026-02-13T04:08:42", "name": "[V5,02/12] PCI: host-generic: Add common helpers for parsing Root Port properties", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "0495f5dbf4477dd709686c2c6f31034d08f309a0", "submitter": { "id": 77063, "url": "http://patchwork.ozlabs.org/api/people/77063/?format=api", "name": "Sherry Sun", "email": "sherry.sun@nxp.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260213040852.3340547-3-sherry.sun@nxp.com/mbox/", "series": [ { "id": 492056, "url": "http://patchwork.ozlabs.org/api/series/492056/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=492056", "date": "2026-02-13T04:08:40", "name": "pci-imx6: Add support for parsing the reset property in new Root Port binding", "version": 5, "mbox": "http://patchwork.ozlabs.org/series/492056/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2196200/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2196200/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-47246-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-pci@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=PhkWFd+y;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-47246-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com\n header.b=\"PhkWFd+y\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.66.48", "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=nxp.com", "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;" ], "Received": [ "from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fBzDB1bBmz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 13 Feb 2026 15:08:10 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id C464A305B599\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 13 Feb 2026 04:08:07 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id EB253255F57;\n\tFri, 13 Feb 2026 04:08:04 +0000 (UTC)", "from DUZPR83CU001.outbound.protection.outlook.com\n (mail-northeuropeazon11012048.outbound.protection.outlook.com [52.101.66.48])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 85F32257827;\n\tFri, 13 Feb 2026 04:08:03 +0000 (UTC)", "from VI0PR04MB12114.eurprd04.prod.outlook.com\n (2603:10a6:800:315::13) by DU4PR04MB11900.eurprd04.prod.outlook.com\n (2603:10a6:10:61a::21) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.10; Fri, 13 Feb\n 2026 04:08:00 +0000", "from VI0PR04MB12114.eurprd04.prod.outlook.com\n ([fe80::feda:fd0e:147f:f994]) by VI0PR04MB12114.eurprd04.prod.outlook.com\n ([fe80::feda:fd0e:147f:f994%5]) with mapi id 15.20.9611.008; Fri, 13 Feb 2026\n 04:08:00 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1770955684; cv=fail;\n b=eBIaIcF+rELfdbk9tXc4YGhj6/kSv5YWPsNAvZldg5nXAEYLhGeVBKdbXSGli9ENWlEadtPqEK5GFlIXYkKABUCWxqMiVrFXx+tDAkRxNWZHLu3ebEYUWy7yiJTqro2CHds+seJW1jQA5P4kcvlXOearaRyMPZvTU0ErF8xoidE=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=SkiQynQpRnmxmzX/iuaQGelRPB0Jru7FlysUQIvjmczCfMOyHoVtwMcKrfIVukG9CfqxhIPyD0x73Jy98f4P9Gvcnv3p+knhiCMu+7Q4zJwK9A49Wgu6krHmvZCgFgv8DCxjWS1ZbplGX70Je0jpx8uycg91IPLg81h/YNgbNK0FB/8+WbdYC6KnRGxLYcsY/JAcGolovTSvkQ0WrODqg9BNiW0szOPEVuj37BRwKG/zl/KqgSdBkok2XGj4dUz4ky2G23nOU306WrxXOUZv2QKVRCUDA5orNjQbzw6tEj0tEUXtF1XbS8U211V1bAloqqszYB7oGwSV6BrhVp0P1w==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1770955684; c=relaxed/simple;\n\tbh=j8xu8Ac1lxSClW6UJgv7Mf6RV4SNEAlMfoiGxAGVmsA=;\n\th=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=FfbEpaXzQ0REax5ux6uP3rELt9dv7pmpBa+xRohEc6bougSQ71WKrvmAKEAwTXglBRv7oVwEzKtETQzOKaCjyOqfQNWIBwNlMKWj1/f26eJdekEa4HTJZ7Llvq2NToCN6gIBQNK1tXWHar844/tW69SyvjXom3xsWjlc9S+UqII=", "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=pIHMzao6q7mHLITiHxszZd1eNVv/sqTBFfWLjT9B00w=;\n b=RjNlgCkuxHihuZc8PXbFsr/2O+t5PcUzBivACtohZS020+/MgS34FeC5qC3svkR5Cwah97h/bW5V8NkEQefrl44L353S9rSK/bIkXUaeWEjXEtKYDWXIgWH8ADc5Ir9q6umKrCM9DNjJB1dMNUEEBFaX2NPGaTg9bVZQ6906UwpMRirdPXO4gpNeZ3eUtHUH7cOfYYhGMuYBUs63MvEobZSGZdsmn3obPU3UhKwditSS/W8K/prq+xnToYjRIiHEStXHJMNFSjkC+fdKEqfAt2g3hd38rtsmJrZw/DQFnDem5d+a90B5VkBy9rclyO1dDTdUCpgBRcjwEr8+wDt1CQ==" ], "ARC-Authentication-Results": [ "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com;\n spf=pass smtp.mailfrom=nxp.com;\n dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com\n header.b=PhkWFd+y; arc=fail smtp.client-ip=52.101.66.48", "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass\n header.d=nxp.com; arc=none" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=pIHMzao6q7mHLITiHxszZd1eNVv/sqTBFfWLjT9B00w=;\n b=PhkWFd+yF4bCQZx5NrLs4/V1yqeSi0NZT6IKsKo+o4cMCLgjE23oVPfy9LPK+ORDoXUHXLthu4OTMD574BbjDPs25JcpifuJnHgm5ybSZX16cxBC1skavlAWkIyLtUrNoAB+MD0qUYeqiglu45lBoEkb+cnlfmeW4+YT8uPH4F0loZprLJjvxiXOiQGjlesihCQ1rdn1bOgtcmJRMvbr0YbCy+p9Yn/JPwRoWI1oeYTDHah/Ui3CGf2v22/38Mr700IMAwoBG2H83HtBLIN8DIe3fMMgKmMdRDTtzUaLQL560QnYkeggl3ZqjQU3ZLVaQiYzMjtHgAXDf2DkTUKlQQ==", "From": "Sherry Sun <sherry.sun@nxp.com>", "To": "hongxing.zhu@nxp.com,\n\tl.stach@pengutronix.de,\n\tFrank.Li@nxp.com,\n\tbhelgaas@google.com,\n\tlpieralisi@kernel.org,\n\tkwilczynski@kernel.org,\n\tmani@kernel.org,\n\trobh@kernel.org,\n\tkrzk+dt@kernel.org,\n\tconor+dt@kernel.org,\n\ts.hauer@pengutronix.de,\n\tfestevam@gmail.com", "Cc": "imx@lists.linux.dev,\n\tkernel@pengutronix.de,\n\tlinux-pci@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tdevicetree@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org", "Subject": "[PATCH V5 02/12] PCI: host-generic: Add common helpers for parsing\n Root Port properties", "Date": "Fri, 13 Feb 2026 12:08:42 +0800", "Message-Id": "<20260213040852.3340547-3-sherry.sun@nxp.com>", "X-Mailer": "git-send-email 2.37.1", "In-Reply-To": "<20260213040852.3340547-1-sherry.sun@nxp.com>", "References": "<20260213040852.3340547-1-sherry.sun@nxp.com>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "SG2PR06CA0206.apcprd06.prod.outlook.com\n (2603:1096:4:68::14) To VI0PR04MB12114.eurprd04.prod.outlook.com\n (2603:10a6:800:315::13)", "Precedence": "bulk", "X-Mailing-List": "linux-pci@vger.kernel.org", "List-Id": "<linux-pci.vger.kernel.org>", "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "VI0PR04MB12114:EE_|DU4PR04MB11900:EE_", "X-MS-Office365-Filtering-Correlation-Id": "5619b055-ae0a-4e09-3eba-08de6ab57a1d", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|366016|19092799006|1800799024|376014|52116014|7416014|38350700014|921020;", "X-Microsoft-Antispam-Message-Info": "\n qK6OzdDkkaFHkr9pZPbHeGCdWJjlJKvpHwjt4eeG13PPSWk5z0pji3DyStieiOh0wj4FACQ9O4gAQyCxjTvZ/Wv8OEgSvEmLc1N7ljzLyXcJtPgRNdJP3ji5oqLKqpmyIaDV7roJfwROFZvGKtHddv7HZcfB3DrLiePGY9rsp+sZxGSrrbqUw3W9e9KJuy8/pff2paMb1ZP/tJ9YSjiVyhj7la89EO7ioHQXmudPDziAFkgHhOvaIA/3o5n8NYLAaOO2kQSbovANENXMKAEy2GVk7skC0lq8e5XDhpo0cXZerq9lxFYOq/2VZe7cSdjLMfOBhgfjpm8FOXFO/bd8akOkL83NP36nkN+mvRK0mRyXx2uY6davzN7cXqHRI1HRa8jlxh5/zDZ9Ggmc9lWuoaOptvr/cixCSMCIproWMm3jZgxTKAwVshiMILQsomaM7be6RVQYxU4lGR/IQB8WXOx1Q4luxXS1bXcJHROu4ovGDRmoo71HD0Cg12WFVd3F6J+s/MSNdT1KVAQ68chHV/0m3phH7C0FmwSGgBwTDS+C0chX/lhVd38vFCZseLHetnrPiQmGRN+eG4ZuCk+le57Hj+rS8ISWwBOu05IzP13eauFaf9tToUv3LbSyTKt6SJP6ScU49i/f+Ewm/W7ZWjxDeJipxvPZYMFY0jVRl23Rv53DHbCtRZv4EjrclLToDNHLuvt7Re+yjQEc7kE1tA9vNC1gi1uz99jj5epAFm6Mqu2knAZjSgDaHGsUAVhKHlWuzf/To+IoIBXAVr6yRQYBBmFYM6Gp05p+chlPerCIb52pYMtbppZXyxQesyT8SEbIakTqkejahUiFgH4cGGJoP1vEspEu8LarkO+PDcFDGG4cvd0vTB5gAvzW2AVmnsyPZhBmNr+ghMAnsb8kbt9AWH3Ho0ouTxvPFGOuFfNe8H8Q76PsAKlGv6irHHTozCLgZHVsZYXPKeuST6k8Uu09hnrFgkNRshVVKwZrY8ur0Kx0qopbqY3H27WK0rKv1rSNkHAErJS0McLFkAJE+28MOKqNERV/HcjdNSetiZPrKBqPIAHvDwCZAM10MgU9rPfF60ZbsOQFS1enBXVxq7+VceRH65sya6gS4MfG2MEOqGJPpDB0w5qqYtKUe3chh8khVQZQeDf3//kVz/SYLrx/C9wRFvIn3hgVTvGJ93DYa0JJfflu719vAFsD0ttv+SFTxR2Wp0jaxmojZHqlgGK3QbGuz3RnxPmne8BaQUBnyul2js3cH8hAw0yZ3t2JfVf19eUN4tsUO3BYhwOwioIkXZGyTVyCl0JiWk0rMSzBDjQSRvfKx78VczXm4N6PBZT5hlm1KJqDs6GKhwem0UmuHM9xIb0WrSUHWMj3WXoH3HnK8XTGUjIqRWuT2M3A4kz+u7x7IMU7mr9FG5dgW6BXG6MZmYWQYsQX4cp+dxzHdYe5O1L8V1EgKHtu5S00fnpgYYrj/L3O9L74JBnevLuM8TWK5B7P9PczchzM4O+44FV6/zmI1IwoUmNNydCKFDkp9Hxxvgb6v0yq+mz8k6b8fDRKRfDfdBd+VPveGA/knKHsjKU2mDnte2MnzStkh4b9JpmgTE1eQrnMMK9g831vTLW9PKTGo0N29TSy1EU=", "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR04MB12114.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(1800799024)(376014)(52116014)(7416014)(38350700014)(921020);DIR:OUT;SFP:1101;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n +V/Z1xm1Gl9TVpms2ZIAKEAgcq6UU8/MwFWxvau3deISeCPXidIjGvXosjgLB5J2gvz7UpIbBDX7IptkjfrRVMWQazinG76iICI2QWW9f5xmVx6qlPtM2ZEIv/ZkCvJtgzAnGUVYfbcOxiwgoRZDhAIbW0LPJxg7BPfRYstMJp1Kqgbs5c6jhyjAPZuTZPzhqPdupPLt9lunXf9g2mZ4o2cJKbFWUq0CbUPpRDvy5+wV5J03YSlBHAAtbeN56VCYciAqgwG44KlewgJwaJdYbaBasZ5Dbo5oSPI2GjfEb1OCSq/gefzc534gtYLWsAmEhkitq9i+qNKd6nHkzkWZYtOrhqu17gvx7XdEATtzdCAY4CdzbvAxz2nenz5/h0XlBjLi06M9BwBf5FxIqtflgD6vy4zvdOZc2yAFTxLD4hhcy8qYLomb/cjsf3Rn0I/yxdZFmlGDtPwEwXxpaw4H9ZEukO6LOsAUqS/igRPLNvJQTnbqe32bPy/iKdiqyf9NnOpk2b7fi+xkFrQRWEuJQUC4Xobl/2KicujuDTr17sfBE5OzX4Z3WrQbcCLxig26ro5xOuFCXqaJsW4Ya/p+SBGvX5bdUPn3mU81qedF+RCWRpLSbYpKd2RhnU5/EUMCEI7lqOZjzorn3gTtVB677tzJSlK+Vc92FUozp9tymv8r193b42ViOU5BsrYPX2zp/aE11iPFiJpidcuYQb4gGhtjDp4c6A/db+FxI+pVqK88kCFDXYJvCRjKghvKGHRYg4min8A2GJRG8P7d9QlILEL3c2Tej4/xqZwRk8lAOMEzB0FocYTEA2pFSbJY+gpoQljE92O1CeHj5vIgEDsFvjnUw8h2EeKacdJaJx5fOAd0yUTW/8h3vqdBjBL3VPgwAvUpzNk195RsLENSVsdNhhR3Ya0c4bX15AOYKH9PpIyj+40msLC/yLuuJL7wy7rZJ8Zi+geInZYWmu+Dq6kDU1+PZGs0u5Fu6l/u2VuvmjV29iqxOriQ1finKfV3tNXxykpOCT7b0vsZ1XoNsvFCoW0atxdd8aYICG0NTi7/3PnnurNa0m2iaG3fEqJM1jHP8OKs+JP7JtQOlnfeyjRqo3tXJc8qBGLygDNjFMZO2co8JhP58giN6tiNxoy5CHwtyDUmNVsZZQkr3leUpdlnPSP0irxBBWYWbmrDfvcX2t4cpzed8avQM7LgwRR7lhuZvdxC4hp9JksTCtDe9nAhIK1jxt16aCBfyeU0LVMUXxXJbE3D91XXVEiuzAYhTHIeIVQGkQbQhM7tX6QuNX1Ook+ynN9S0AYMNTpPtISbVT9eJhQB47T8UAI0WDcyk7dPTSF34mP0auezOMLu6eV6+VPRwlATymgkDrr3jZe29NIpgsSM/sTmRniicNupBk16k1OAPOufQQdqd9vaujfQBfeeaqhDeHF4CmZabDUx6KQCgnU9lAhgawjN72a7GjyOaTZE1s1AwK7R2zGssQlDjGNaJQS6YvwGM0KHXMieYfhsscBiCWP8cUXiRLXJU++5ZUVPQ4X3/32NCmZmsxED6BIOKNBnToGBMlNUxVq8Qu6kx/d/vNXNTaDEq7okG9S9kJKn2W0MHYhlTITDJrKzfAbd4qIk4yiwoT9TzJOvbBFuGXxhSH7whxwVs6OhYux/F+OzUCc75fDIZSX1l7iFB5GfSXxyYTTDs4n3rs0XKgtL4XVvdsjAPkMzYaWcmAnLTLWFLZE9iTwJEbtI5UXtDg==", "X-OriginatorOrg": "nxp.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 5619b055-ae0a-4e09-3eba-08de6ab57a1d", "X-MS-Exchange-CrossTenant-AuthSource": "VI0PR04MB12114.eurprd04.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "13 Feb 2026 04:08:00.4980\n (UTC)", "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted", "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635", "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED", "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n V6WwiAdiOW/cz6ZzTQsio8PppQB0QVHFJ2cE+wQHFDJoDJgQhLcIjnw6yKNmimjTy2Gczr3EVqelMDyKguWPIQ==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DU4PR04MB11900" }, "content": "Introduce generic helper functions to parse Root Port device tree nodes\nand extract common properties like reset GPIOs. This allows multiple\nPCI host controller drivers to share the same parsing logic.\n\nDefine struct pci_host_port to hold common Root Port properties\n(currently only reset GPIO descriptor) and add\npci_host_common_parse_ports() to parse Root Port nodes from device tree.\n\nAlso add the 'ports' list to struct pci_host_bridge for better maintain\nparsed Root Port information.\n\nSigned-off-by: Sherry Sun <sherry.sun@nxp.com>\n---\n drivers/pci/controller/pci-host-common.c | 58 ++++++++++++++++++++++++\n drivers/pci/controller/pci-host-common.h | 15 ++++++\n drivers/pci/probe.c | 2 +\n include/linux/pci.h | 1 +\n 4 files changed, 76 insertions(+)", "diff": "diff --git a/drivers/pci/controller/pci-host-common.c b/drivers/pci/controller/pci-host-common.c\nindex d6258c1cffe5..0c35907a5076 100644\n--- a/drivers/pci/controller/pci-host-common.c\n+++ b/drivers/pci/controller/pci-host-common.c\n@@ -9,6 +9,7 @@\n \n #include <linux/kernel.h>\n #include <linux/module.h>\n+#include <linux/gpio/consumer.h>\n #include <linux/of.h>\n #include <linux/of_address.h>\n #include <linux/of_pci.h>\n@@ -17,6 +18,63 @@\n \n #include \"pci-host-common.h\"\n \n+/**\n+ * pci_host_common_parse_port - Parse a single Root Port node\n+ * @bridge: PCI host bridge\n+ * @node: Device tree node of the Root Port\n+ *\n+ * Returns: 0 on success, negative error code on failure\n+ */\n+static int pci_host_common_parse_port(struct pci_host_bridge *bridge,\n+\t\t\t\t struct device_node *node)\n+{\n+\tstruct device *dev = &bridge->dev;\n+\tstruct pci_host_port *port;\n+\tstruct gpio_desc *reset;\n+\n+\treset = devm_fwnode_gpiod_get(dev, of_fwnode_handle(node),\n+\t\t\t\t \"reset\", GPIOD_OUT_HIGH, \"PERST#\");\n+\tif (IS_ERR(reset))\n+\t\treturn PTR_ERR(reset);\n+\n+\tport = devm_kzalloc(dev, sizeof(*port), GFP_KERNEL);\n+\tif (!port)\n+\t\treturn -ENOMEM;\n+\n+\tport->reset = reset;\n+\tINIT_LIST_HEAD(&port->list);\n+\tlist_add_tail(&port->list, &bridge->ports);\n+\n+\treturn 0;\n+}\n+\n+/**\n+ * pci_host_common_parse_ports - Parse Root Port nodes from device tree\n+ * @bridge: PCI host bridge\n+ *\n+ * This function iterates through child nodes of the host bridge and parses\n+ * Root Port properties (currently only reset GPIO).\n+ *\n+ * Returns: 0 on success, -ENOENT if no ports found, other negative error codes\n+ * on failure\n+ */\n+int pci_host_common_parse_ports(struct pci_host_bridge *bridge)\n+{\n+\tstruct device *dev = &bridge->dev;\n+\tint ret = -ENOENT;\n+\n+\tfor_each_available_child_of_node_scoped(dev->of_node, of_port) {\n+\t\tif (!of_node_is_type(of_port, \"pci\"))\n+\t\t\tcontinue;\n+\t\tret = pci_host_common_parse_port(bridge, of_port);\n+\t\tif (ret)\n+\t\t\treturn ret;\n+\t}\n+\n+\treturn ret;\n+}\n+EXPORT_SYMBOL_GPL(pci_host_common_parse_ports);\n+\n static void gen_pci_unmap_cfg(void *ptr)\n {\n \tpci_ecam_free((struct pci_config_window *)ptr);\ndiff --git a/drivers/pci/controller/pci-host-common.h b/drivers/pci/controller/pci-host-common.h\nindex b5075d4bd7eb..25d808319836 100644\n--- a/drivers/pci/controller/pci-host-common.h\n+++ b/drivers/pci/controller/pci-host-common.h\n@@ -12,6 +12,21 @@\n \n struct pci_ecam_ops;\n \n+/**\n+ * struct pci_host_port - Generic Root Port properties\n+ * @list: List node for linking multiple ports\n+ * @reset: GPIO descriptor for PERST# signal\n+ *\n+ * This structure contains common properties that can be parsed from\n+ * Root Port device tree nodes.\n+ */\n+struct pci_host_port {\n+\tstruct list_head\tlist;\n+\tstruct gpio_desc\t*reset;\n+};\n+\n+int pci_host_common_parse_ports(struct pci_host_bridge *bridge);\n+\n int pci_host_common_probe(struct platform_device *pdev);\n int pci_host_common_init(struct platform_device *pdev,\n \t\t\t struct pci_host_bridge *bridge,\ndiff --git a/drivers/pci/probe.c b/drivers/pci/probe.c\nindex 2975974f35e8..007a3fb8da86 100644\n--- a/drivers/pci/probe.c\n+++ b/drivers/pci/probe.c\n@@ -647,6 +647,7 @@ static void pci_release_host_bridge_dev(struct device *dev)\n \n \tpci_free_resource_list(&bridge->windows);\n \tpci_free_resource_list(&bridge->dma_ranges);\n+\tpci_free_resource_list(&bridge->ports);\n \n \t/* Host bridges only have domain_nr set in the emulation case */\n \tif (bridge->domain_nr != PCI_DOMAIN_NR_NOT_SET)\n@@ -671,6 +672,7 @@ static void pci_init_host_bridge(struct pci_host_bridge *bridge)\n {\n \tINIT_LIST_HEAD(&bridge->windows);\n \tINIT_LIST_HEAD(&bridge->dma_ranges);\n+\tINIT_LIST_HEAD(&bridge->ports);\n \n \t/*\n \t * We assume we can manage these PCIe features. Some systems may\ndiff --git a/include/linux/pci.h b/include/linux/pci.h\nindex 1c270f1d5123..b05482355abc 100644\n--- a/include/linux/pci.h\n+++ b/include/linux/pci.h\n@@ -634,6 +634,7 @@ struct pci_host_bridge {\n \tint\t\tdomain_nr;\n \tstruct list_head windows;\t/* resource_entry */\n \tstruct list_head dma_ranges;\t/* dma ranges resource list */\n+\tstruct list_head ports;\t\t/* Root Port list (pci_host_port) */\n #ifdef CONFIG_PCI_IDE\n \tu16 nr_ide_streams; /* Max streams possibly active in @ide_stream_ida */\n \tstruct ida ide_stream_ida;\n", "prefixes": [ "V5", "02/12" ] }