From nobody Fri Sep 25 23:48:56 2026 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A2F5A4756DD for ; Mon, 7 Sep 2026 11:26:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780402; cv=none; b=FF3kTBWo3T7ZwSYNeXMBylcqgE3NBvfvuOVrTC/VC5bbYkX+Xhwluyba4mN604bwtBOAE3S3yQs3BMPHiWJBp9/RxtvzGd/UYv4g5yOdwb/LPCXXHiToi4qWASDx7cd1JLzvqR8a0dsgeL21h07dLpoq/mFJbkv9ZXWQg0JkZ5M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780402; c=relaxed/simple; bh=mdCPQeEcSAMoGJw0IrGjVzlTvAigGgNLqFZhPQ1+zZA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jq6A2fLSSSuBueeTxEQ+ND0qZVKvsV18q16pRE71CbbW8kyOLm65GVOjyk05oDbApnT9iniLJgBwhI+oR1MhK58yznxN6KnKuZ0xbydt4hSGx4H6ghnEfOE7lNgtKdtEOxaMg3ENjjSWeFHNx21D1I7wDcG7X5zmrE6aLq6GVjo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TWbpjmi/; arc=none smtp.client-ip=209.85.216.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TWbpjmi/" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-398d2b28acfso2454434a91.1 for ; Mon, 07 Sep 2026 04:26:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788780399; x=1789385199; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=IYNU3JutMTV98e9RCfpqkVsEuBCUrUdbqqssfR9cXXM=; b=TWbpjmi/LkluEWP0L3frAlkV52+WxtLHPLYCDRdK1S+8Fr9BFEEnO/vtowh1jOB7NJ omAfsKFO8e31GU9ohi0tEIX8YHDSXewzxQxL5QVTGPpFYbkJl6h6N38WFuBSTplWg813 ken0MVA9dbLBQOR4EuUDPNS1DHiFviSTNsuPPYNFX31som1FtJp4kheNK2yQ5WPvt71k gEgM40elsLrZGSEZhxZ/OWkM2OtAepF/lF76OZdAJGh7ilNQOwg0cFSuDG1hyCXhZAY9 kxUIC/lzC4j6rW65F2OADONXQwGfK38GQDiv3HSfUIRQxe18Qo8NsmdDVx43bjwd/1S9 /9nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788780399; x=1789385199; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=IYNU3JutMTV98e9RCfpqkVsEuBCUrUdbqqssfR9cXXM=; b=boF1r2WWUmOn1DJoFycHOLAg6/2ctZ6jbRB67zWhCn+yhfZltfi0/avIbyZDwS7Qj/ rkZkpUBa3gj5bA6CQPOQQDrTwJhA553neeTyji+wjmDWLUJPC1AqNkcV35HwBq5MqmE1 AWDvCM9qwDcI99+WhPWv1CU9nsVB4s6O0K+O4W30f+UFl1k7B+G1m7P9f2X8pyE72x9w cP7MW1Vh5rySjCF7qYB6AFf+aDXlD0iNIRNHQP7BHSgUJ6y7TF16sI90dWPZwVWZsWfQ kPLacUZg/WM/365i8n4oEA3TgAr374G/q7rgpf2uFyIlYbBZNEZgSwa+7JBb99UwFfHw Eu+Q== X-Forwarded-Encrypted: i=1; AKwUvBwTeD71kNA8l+1NMP1whHDLTon5JxhTo1f6xgPapyNT3i8fWTvh3lei/AlTf2D6YB3fAFEngXiP7/4t4UU=@vger.kernel.org X-Gm-Message-State: AFuF++kQcKLFpQxHPaPRamwczncXoXIq5rjVJG18qa4JiZvhX4CP+1KF LonJzcwf7KQcwtb+afg3oiVkz72AhBQ+gGXxUnzGMC9OijJsGIJw6Q7U X-Gm-Gg: AYBFou1zhvQnf8xAZOIpWX0rPJRNr8Q2JBAD9glzSMMXPVVFIMBTlhCVMwogPIHEfIc OoF0VAYlSSeOaMSa/5ImXrQdnHwkMm+YHpcWF4IsYtoaKo+jN/dUg2eYrzQWDyCL0s2jWti8GfD DMYRBV8al0WqsO8Lh7CbHSOIJgx34t6py1PwWlvuTr4PCa0kS/o2ups2Aud4QfoHaCEg2v3tXVC p5EVqjv4b1QTE8sUbJ5O6XafCQfC2OUTaaY7lRFQiQz5XJTst0NYmw3HouHrIatpnCkoGAZsCuW uGVc7UtjbjP2DVjRKNS26g5MsoYXR3TPkHwtTFlpAiD8jf1U0UBYXFqaM7cNasjzQdcYnbZgaL2 vt1Crqk2bd7yruX2nGXAh0M66NujnpaJE+aAWUGUDjOCG6KWNJPtMFxdqbyYaNsQ+Ky3+LRN/4C yOxumMY4wVeqfLhweeAPKa0Ef93A0iammQMdfC X-Received: by 2002:a17:90b:510c:b0:398:9be6:f999 with SMTP id 98e67ed59e1d1-39b262e27a9mr37011195a91.24.1788780398731; Mon, 07 Sep 2026 04:26:38 -0700 (PDT) Received: from localhost ([2001:da8:7001:11::cb]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39b2612d3f1sm19984853a91.13.2026.09.07.04.26.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Sep 2026 04:26:38 -0700 (PDT) From: Inochi Amaoto To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Frank Li , Niklas Cassel , Sherry Sun , Arnd Bergmann , Christian Bruel , Krishna Chaitanya Chundru , Senchuan Zhang , Inochi Amaoto , Alex Elder , Xincheng Zhang , Randolph Lin , Siddharth Vadapalli , Andy Shevchenko , Vidya Sagar , Neil Armstrong , Danilo Krummrich , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20=28The=20Capable=20Hub=29?= , Pengpeng Hou , Anirudh Srinivasan , Gustavo Pimentel Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, Yixun Lan , Longbin Li Subject: [PATCH v5 1/6] PCI: spacemit-k1: Add device data support Date: Mon, 7 Sep 2026 19:26:00 +0800 Message-ID: <20260907112606.465778-2-inochiama@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260907112606.465778-1-inochiama@gmail.com> References: <20260907112606.465778-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To reuse the K1 PCIe driver logic for K3 PCIe controller, add device data to handle the K1 specific logic and make room for the incoming logic for K3. Signed-off-by: Inochi Amaoto --- drivers/pci/controller/dwc/pcie-spacemit-k1.c | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-spacemit-k1.c b/drivers/pci/co= ntroller/dwc/pcie-spacemit-k1.c index 0564c46e2f48..9512556d4539 100644 --- a/drivers/pci/controller/dwc/pcie-spacemit-k1.c +++ b/drivers/pci/controller/dwc/pcie-spacemit-k1.c @@ -45,8 +45,17 @@ #define PCIE_CONTROL_LOGIC 0x0004 #define PCIE_SOFT_RESET BIT(0) =20 +struct k1_pcie; + +struct k1_pcie_device_data { + const struct dw_pcie_host_ops *host_ops; + const struct dw_pcie_ops *ops; + int (*parse_port)(struct k1_pcie *k1); +}; + struct k1_pcie { struct dw_pcie pci; + const struct k1_pcie_device_data *data; struct phy *phy; void __iomem *link; struct regmap *pmu; /* Errors ignored; MMIO-backed regmap */ @@ -274,14 +283,21 @@ static int k1_pcie_parse_port(struct k1_pcie *k1) =20 static int k1_pcie_probe(struct platform_device *pdev) { + const struct k1_pcie_device_data *data; struct device *dev =3D &pdev->dev; struct k1_pcie *k1; int ret; =20 + data =3D device_get_match_data(dev); + if (!data) + return -ENODEV; + k1 =3D devm_kzalloc(dev, sizeof(*k1), GFP_KERNEL); if (!k1) return -ENOMEM; =20 + k1->data =3D data; + k1->pmu =3D syscon_regmap_lookup_by_phandle_args(dev_of_node(dev), SYSCON_APMU, 1, &k1->pmu_off); @@ -295,11 +311,11 @@ static int k1_pcie_probe(struct platform_device *pdev) "failed to map \"link\" registers\n"); =20 k1->pci.dev =3D dev; - k1->pci.ops =3D &k1_pcie_ops; + k1->pci.ops =3D data->ops; k1->pci.pp.num_vectors =3D MAX_MSI_IRQS; dw_pcie_cap_set(&k1->pci, REQ_RES); =20 - k1->pci.pp.ops =3D &k1_pcie_host_ops; + k1->pci.pp.ops =3D data->host_ops; =20 /* Hold the PHY in reset until we start the link */ regmap_set_bits(k1->pmu, k1->pmu_off + PCIE_CLK_RESET_CONTROL, @@ -316,7 +332,7 @@ static int k1_pcie_probe(struct platform_device *pdev) =20 platform_set_drvdata(pdev, k1); =20 - ret =3D k1_pcie_parse_port(k1); + ret =3D data->parse_port(k1); if (ret) return dev_err_probe(dev, ret, "failed to parse root port\n"); =20 @@ -334,8 +350,14 @@ static void k1_pcie_remove(struct platform_device *pde= v) dw_pcie_host_deinit(&k1->pci.pp); } =20 +static const struct k1_pcie_device_data k1_pcie_device_data =3D { + .host_ops =3D &k1_pcie_host_ops, + .ops =3D &k1_pcie_ops, + .parse_port =3D k1_pcie_parse_port, +}; + static const struct of_device_id k1_pcie_of_match_table[] =3D { - { .compatible =3D "spacemit,k1-pcie", }, + { .compatible =3D "spacemit,k1-pcie", .data =3D &k1_pcie_device_data }, { } }; MODULE_DEVICE_TABLE(of, k1_pcie_of_match_table); --=20 2.55.0 From nobody Fri Sep 25 23:48:56 2026 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4CE5A47728A for ; Mon, 7 Sep 2026 11:26:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780404; cv=none; b=KzWuEajeydfCmUVLCb/eAkkit7nY0V9863kjYBlByclk3at7Fzxx84sB3jYpKm6uQEqbATOZLZi9JIY5zo6QruSQCwVcJNB4i9JJJpb2/XJ4uhzuKBCC08dCT4LOY49/CuRvJ8G98xXjvXBN0V7vYeMvkzIUAQGM2lEoPPsfOD8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780404; c=relaxed/simple; bh=RyM/haTxWa/nYIBLao3nZXKdo96GACCECSjiTCRDRkk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QbKxms+EtAopI+q+/4zN1+tbrIFXMjMsAZCMFszLLHJiXlGCpCE/ZvaLbSwN2Ba687/DSUnbBgGye1d6EV49au136kC44S98VLyZxr9TVrZElqnpcu92LUekv8Ml08m0NOsS4Z+Kdu/xjc4n6jZ23VuyeT5FtZjQM8P8BHVns/8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=J00smpDq; arc=none smtp.client-ip=209.85.216.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J00smpDq" Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-38d489b6b71so3952871a91.0 for ; Mon, 07 Sep 2026 04:26:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788780402; x=1789385202; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Rc3uyG1Btuax47jaWosPyczOcgqdfqJHPv/7lDCZEAM=; b=J00smpDqERzGTq8/L89wsUQ/Ubiu+2dHCZqo4Vm4t3hAhpV210Hnu7AF8fKg7D2ndZ 6JyXTPurcv/bBgROQxUoYMjxS13tsPSTMMFlJxglwDQ+GF+qB+zGeDdEbqk3X9g1wuXo MkZJjvjhcacnLW3IXk5mrEUKi9F6P87u9XhOrSvH/1jnQojpe51/DHW+kNpn0twgDloc r1oqCbx+EnnjEUMS5lHTBQtDRvsMLQVy4JNfN8iQ1u3IzDAP4u7w5qRH+uh7FZ0Q3cWs Ed70x/lJ13kCsSCEiKaBUu7JWJXP8QKBQunyi80w08ZkEws04gfI62fQ+LvN8+BecNDP GIRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788780402; x=1789385202; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Rc3uyG1Btuax47jaWosPyczOcgqdfqJHPv/7lDCZEAM=; b=CBFIDMJ3ccdZYte+Me2JebLQCy0f+pqRt92cdFd3Y/y3kxvJP2nAMYSmMLC/G/Clvw vTPCCoyy4dUy9YhpX1NVac7OddIIhAA43p4IoNURv5qR3VfQJxbaDYzDug40kCEn9/2N irmmxlk1+HzjMYAgE+aO/Io5FZ60o47VMs0H57UUEGrDusEYJSFdYEdUQ4xY0imsQwBl 8FQMPBy4DkShYFhcj9jfSHeP0pjiPOGbofKGP0p1brOQUSthPms5OU0Ev7Sx/OtDDqWj uXhv8qbgGq+3X+59EgZNRy++5LeDNS0B/ABK+iTGz0fITFxnywuvQ2nABYJaKi49i58v Y8NQ== X-Forwarded-Encrypted: i=1; AKwUvBypegD970jCgbZcHnJMOJVPXSBg+DCNnaAUA2BT8Vw4e6MD7KY9ylLoqweGiKf1afIfcYHZICMqI+ss3jY=@vger.kernel.org X-Gm-Message-State: AFuF++k9lHBjdM4E5xhYvSVwi9OLA14Sz23IOM9HZp7OWuLhHSQAqEKR kjDWxVMK3GUeNkihFz6qecFpxvEWOKuv/F4LJqSkbNW4jEqfhPCAhrFW X-Gm-Gg: AYBFou0iMaxl2WLJTITZRwargkW8Ll/ZqttfIqN+5jLnbP9jIQaRy2uam6nxTmfs5DB P2Bv/G8Vn4uCZdq0QKjZXI7DX2sm4hFXbobo7qiVlTw/G/MVFZwZXk74QXzqBnb6pHxzvm8IOFI Sjw4CeHMNjaEd/LOtJLQdEfp5b8Tv3UPbjhhdQr9m1xCKBDofa9Tbv0BQ9bVoUWXsJGfedZMrJi zRklMZnwCUBwGSVzpxtilXEMsPyJZ2fPOxVrNpFQD/LWCF++uJvSmJ3b3JPzYQRgrMOzCharht6 I3HCvAtqIFLM8AAW9bIQxkIGhhUuOzb77MZnkCV3r+iorwr2tV79ST1C79vkZ+htm6iSeHFQ5Cm cowgW7hv0o02VzgkqH3lPJH0W5wNod/+FokN1JlU3ikHF2wHePE0qbIi2+IgLUneuTGBx/VdC29 Q9h0MSkXPTPnaSiM/Dl1werhulSA54TRHlaaiDUUibCtTr4FA= X-Received: by 2002:a17:90b:17cf:b0:398:9be8:ea6a with SMTP id 98e67ed59e1d1-39b26216cf7mr33136274a91.23.1788780401528; Mon, 07 Sep 2026 04:26:41 -0700 (PDT) Received: from localhost ([2001:da8:7001:11::cb]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39b08cacba5sm27707027a91.12.2026.09.07.04.26.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Sep 2026 04:26:41 -0700 (PDT) From: Inochi Amaoto To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Frank Li , Niklas Cassel , Sherry Sun , Arnd Bergmann , Christian Bruel , Krishna Chaitanya Chundru , Senchuan Zhang , Inochi Amaoto , Alex Elder , Xincheng Zhang , Randolph Lin , Siddharth Vadapalli , Andy Shevchenko , Vidya Sagar , Neil Armstrong , Danilo Krummrich , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20=28The=20Capable=20Hub=29?= , Pengpeng Hou , Anirudh Srinivasan , Gustavo Pimentel Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, Yixun Lan , Longbin Li Subject: [PATCH v5 2/6] PCI: spacemit-k1: Add multiple PHY handles support Date: Mon, 7 Sep 2026 19:26:01 +0800 Message-ID: <20260907112606.465778-3-inochiama@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260907112606.465778-1-inochiama@gmail.com> References: <20260907112606.465778-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The PCIe controller on Spacemit K3 may use multiple PHYs at the same time. The feature is not supported by the current driver. So extend the PHY definition to support multiple PHY handles. Signed-off-by: Inochi Amaoto --- drivers/pci/controller/dwc/pcie-spacemit-k1.c | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-spacemit-k1.c b/drivers/pci/co= ntroller/dwc/pcie-spacemit-k1.c index 9512556d4539..1049391beee8 100644 --- a/drivers/pci/controller/dwc/pcie-spacemit-k1.c +++ b/drivers/pci/controller/dwc/pcie-spacemit-k1.c @@ -51,12 +51,14 @@ struct k1_pcie_device_data { const struct dw_pcie_host_ops *host_ops; const struct dw_pcie_ops *ops; int (*parse_port)(struct k1_pcie *k1); + unsigned int max_phy_count; }; =20 struct k1_pcie { struct dw_pcie pci; const struct k1_pcie_device_data *data; - struct phy *phy; + struct phy_bulk_data *phys; + unsigned int phy_count; void __iomem *link; struct regmap *pmu; /* Errors ignored; MMIO-backed regmap */ u32 pmu_off; @@ -115,6 +117,23 @@ static void k1_pcie_disable_resources(struct k1_pcie *= k1) clk_bulk_disable_unprepare(ARRAY_SIZE(pci->app_clks), pci->app_clks); } =20 +static int k1_pcie_get_phy_handle(struct k1_pcie *k1, struct device_node *= node) +{ + const struct k1_pcie_device_data *data =3D k1->data; + struct device *dev =3D k1->pci.dev; + int count; + + count =3D devm_of_phy_bulk_get_all(dev, node, &k1->phys); + if (count < 0) + return count; + if (count =3D=3D 0 || count > data->max_phy_count) + return -EINVAL; + + k1->phy_count =3D count; + + return 0; +} + /* FIXME: Disable ASPM L1 to avoid errors reported on some NVMe drives */ static void k1_pcie_disable_aspm_l1(struct k1_pcie *k1) { @@ -170,7 +189,7 @@ static int k1_pcie_init(struct dw_pcie_rp *pp) */ regmap_set_bits(k1->pmu, reset_ctrl, DEVICE_TYPE_RC | PCIE_AUX_PWR_DET); =20 - ret =3D phy_init(k1->phy); + ret =3D phy_bulk_init(k1->phy_count, k1->phys); if (ret) { k1_pcie_disable_resources(k1); =20 @@ -195,7 +214,7 @@ static void k1_pcie_deinit(struct dw_pcie_rp *pp) regmap_set_bits(k1->pmu, k1->pmu_off + PCIE_CLK_RESET_CONTROL, PCIE_RC_PERST); =20 - phy_exit(k1->phy); + phy_bulk_exit(k1->phy_count, k1->phys); =20 k1_pcie_disable_resources(k1); } @@ -262,23 +281,18 @@ static int k1_pcie_parse_port(struct k1_pcie *k1) { struct device *dev =3D k1->pci.dev; struct device_node *root_port; - struct phy *phy; + int ret; =20 /* We assume only one root port */ root_port =3D of_get_next_available_child(dev_of_node(dev), NULL); if (!root_port) return -EINVAL; =20 - phy =3D devm_of_phy_get(dev, root_port, NULL); + ret =3D k1_pcie_get_phy_handle(k1, root_port); =20 of_node_put(root_port); =20 - if (IS_ERR(phy)) - return PTR_ERR(phy); - - k1->phy =3D phy; - - return 0; + return ret; } =20 static int k1_pcie_probe(struct platform_device *pdev) @@ -354,6 +368,7 @@ static const struct k1_pcie_device_data k1_pcie_device_= data =3D { .host_ops =3D &k1_pcie_host_ops, .ops =3D &k1_pcie_ops, .parse_port =3D k1_pcie_parse_port, + .max_phy_count =3D 1, }; =20 static const struct of_device_id k1_pcie_of_match_table[] =3D { --=20 2.55.0 From nobody Fri Sep 25 23:48:56 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 05C5B1397 for ; Mon, 7 Sep 2026 11:26:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780406; cv=none; b=RhKXKSo/zg0mxNB9/s0xPvhglY5UsLJ5aMNzbx+kDB6+d/bjhgapmgDoZkK9+VEI+4iDsO5zpmkImnbsbyvQ/QT/mj6l7QzII3fD8o3J1OqFIyEfSqIZ6wEvcvGMFZvpFugrLEpxdAcDvD6zsIdK2uX77kvIpzX3bohlY+RjlMs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780406; c=relaxed/simple; bh=3KvegCNL4h2th2HP4yz1lMrFoOsU01heJpMNzftVqoQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tBMx2/st+HYzaT0RuSVoohSL15hYbk3K2WEk9OWYYszK7RdCxF1RIz13ttb2m1MeqF3oXt6kwg6uMaN/FDJGFPCqzZ/f0gT2k7RFks3iRwpByrFcm5afKdtz6MT1DaSwkBkJ2+JxutfnTA4CGt0rVxlFQnXXmfOYA4Uupi1yBPg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=C2s6xl8L; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="C2s6xl8L" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2d5cad1a6baso29404475ad.3 for ; Mon, 07 Sep 2026 04:26:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788780404; x=1789385204; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=D4ROjh0Txn+cURQwAkggsPhj+gLlvJP/O4avQg1uNi4=; b=C2s6xl8L2S+fHA6hHFcP/4np5HwP0hMgbzvHFO/CWmA9Jwe76BlGGT26Hy3lJSJwza SGtuL149Apxw8KSqTSDwP7L9AjSniWouUEZo4Ozn4FTqRTO6uZWRD/e5z09yLRKFoz2x uoqPdVZ5thks9u6rks4M8NS/d+tmoI4W3evGU0kJFYFPJh1atuclHd2fwPjsHUYvzWeg W/latRea5IPLhI9lj7g7SwACDUlHQoLQAS0Cd2yVxIg4r1KhEYQxbse36c4bEeEprTdN PbgVoJOJdIS2Bdg1VZZDGvgDPU2KgSoRxtDo6IoXeBbcliWhX3fLZmgmh2n7/Gbm45d3 ITpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788780404; x=1789385204; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=D4ROjh0Txn+cURQwAkggsPhj+gLlvJP/O4avQg1uNi4=; b=am/4NcgZfK62mHJ6lBUMvOP7IuYE0v8fxlYUH7lkRnGvrRrNJnhQ20YvlrJiwnYboW 8erRgUV9syrV8mxnRfWdIMqG6NdlPft3HQb2K3lWIfl2Whsco7dPQ/z5Gw0S6VU6f/Cx iPko9DktOFy9HOfAaGYCOpcayH7bEdVpwNAzXAXe9XWwRqGYAIHps23G3Z7tsViW4OUh uvn9G5eXFJ6Jvm+OcOzJjf0Kkcc85xbIbckf+ZE1/eSOheWq9COOvAjW6fENTkChobBW J7gPp8IE+VwhN2lWZZkk0Cm7AVGQZYSJSE02G5MbYCm5rFR6rUXWwftqfuQNQcHjpH3U lJyw== X-Forwarded-Encrypted: i=1; AKwUvBxEDN9ihqnh5zkl1rfTU3jf8Bt+6ymGnKZRWiIPMODteIPLMfDitLW+8HmVuvzfJzy27dG4dgQJ+nVZLWU=@vger.kernel.org X-Gm-Message-State: AFuF++kgMRbtv5lgP97sG0Sr0JLssuB7rT1Kg65oc3rYfE0bp5+fA8tM oiuiosdOiYWGbu9WjxoIstJtlA3vQMraHnwwv9m6sv2I/2n9UEo4bmMi X-Gm-Gg: AYBFou1tRh1bJy38qXxEnJWybCxCD2tKVK4/o0tnGWby7tG3Np6uV3QT0gqi2+REFRB bn+v8dSqKRlvzBY7pSdFDRJtxaOGqy/AEcjkH9yzWF3qKzwWI7x7sX/quY7Bu80x6ttwK1W7IVO 7af37AezX1YnFc9KWrqFqSztV0jKVLDUQKPjUnkVH1dn3aMJrSit/V/HdF5xcIjH31buwa3SkdK 2iSYLgHHDIUfXAg5lz8plFptmJL4KqOIyg/7SNjnNnOUZfp/w4o4dK+cfN5kwXDZQ098nCPCxMd /M+bQqHnbRtDl2jzVNyG2AXok8ok1blFQlOFSJ8tP6YZ656DWNrzDRyJLZhQYC36US/PUFKXGOE EQyExZiMlk/q/zuHe2wPSo1GyYsHSx3zTPycihQH3TWCMnYphYom9fiPfYn1hOYpvjHqMi7UfmW Xug2GAUxEiAECGHU03VQleDPC/7Tfk8OnQluZW X-Received: by 2002:a17:903:2c6:b0:2d8:d4d3:da50 with SMTP id d9443c01a7336-2db126aae2dmr385170325ad.20.1788780404053; Mon, 07 Sep 2026 04:26:44 -0700 (PDT) Received: from localhost ([2001:da8:7001:11::cb]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2db1499dad4sm44234655ad.55.2026.09.07.04.26.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Sep 2026 04:26:43 -0700 (PDT) From: Inochi Amaoto To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Frank Li , Niklas Cassel , Sherry Sun , Arnd Bergmann , Christian Bruel , Krishna Chaitanya Chundru , Senchuan Zhang , Inochi Amaoto , Alex Elder , Xincheng Zhang , Randolph Lin , Siddharth Vadapalli , Andy Shevchenko , Vidya Sagar , Neil Armstrong , Danilo Krummrich , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20=28The=20Capable=20Hub=29?= , Pengpeng Hou , Anirudh Srinivasan , Gustavo Pimentel Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, Yixun Lan , Longbin Li Subject: [PATCH v5 3/6] PCI: spacemit-k1: Add device id update helper Date: Mon, 7 Sep 2026 19:26:02 +0800 Message-ID: <20260907112606.465778-4-inochiama@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260907112606.465778-1-inochiama@gmail.com> References: <20260907112606.465778-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Both K1 and K3 need to set vendor id and device id, add a helper function to simplify this. Signed-off-by: Inochi Amaoto --- drivers/pci/controller/dwc/pcie-spacemit-k1.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-spacemit-k1.c b/drivers/pci/co= ntroller/dwc/pcie-spacemit-k1.c index 1049391beee8..c610b367412a 100644 --- a/drivers/pci/controller/dwc/pcie-spacemit-k1.c +++ b/drivers/pci/controller/dwc/pcie-spacemit-k1.c @@ -52,6 +52,7 @@ struct k1_pcie_device_data { const struct dw_pcie_ops *ops; int (*parse_port)(struct k1_pcie *k1); unsigned int max_phy_count; + unsigned int device_id; }; =20 struct k1_pcie { @@ -151,6 +152,16 @@ static void k1_pcie_disable_aspm_l1(struct k1_pcie *k1) dw_pcie_dbi_ro_wr_dis(pci); } =20 +static void k1_pcie_set_device_id(struct k1_pcie *k1) +{ + struct dw_pcie *pci =3D &k1->pci; + + dw_pcie_dbi_ro_wr_en(pci); + dw_pcie_writew_dbi(pci, PCI_VENDOR_ID, PCI_VENDOR_ID_SPACEMIT); + dw_pcie_writew_dbi(pci, PCI_DEVICE_ID, k1->data->device_id); + dw_pcie_dbi_ro_wr_dis(pci); +} + static int k1_pcie_init(struct dw_pcie_rp *pp) { struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); @@ -166,10 +177,7 @@ static int k1_pcie_init(struct dw_pcie_rp *pp) return ret; =20 /* Set the PCI vendor and device ID */ - dw_pcie_dbi_ro_wr_en(pci); - dw_pcie_writew_dbi(pci, PCI_VENDOR_ID, PCI_VENDOR_ID_SPACEMIT); - dw_pcie_writew_dbi(pci, PCI_DEVICE_ID, PCI_DEVICE_ID_SPACEMIT_K1); - dw_pcie_dbi_ro_wr_dis(pci); + k1_pcie_set_device_id(k1); =20 /* * Start by asserting fundamental reset (drive PERST# low). The @@ -369,6 +377,7 @@ static const struct k1_pcie_device_data k1_pcie_device_= data =3D { .ops =3D &k1_pcie_ops, .parse_port =3D k1_pcie_parse_port, .max_phy_count =3D 1, + .device_id =3D PCI_DEVICE_ID_SPACEMIT_K1, }; =20 static const struct of_device_id k1_pcie_of_match_table[] =3D { --=20 2.55.0 From nobody Fri Sep 25 23:48:56 2026 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 98CC0477E4B for ; Mon, 7 Sep 2026 11:26:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780409; cv=none; b=duxioKFxxZgFvJXYM75J+yWRYTKUTJJ5b7YzDpuMD3E0Vzr0DO9XicM+eejFZw9NFyu+P1jQobQdpWyM6dPYmOHD6mF856LFEFwyvL6jTadER2Bla1jzQjvv7BOsSmFb2E4eoEtDfGg77we8ROhxw9spQ9DACuY+NvgXgn5J6fQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780409; c=relaxed/simple; bh=L3fsKyGi5rpLNg8G/ROz7kxtpDKTfFUi8q+A7hQ20Dk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YRUdLuySLMu60g7J7iyEleS2qsABg46o0r3kwyt7UF6JeR9EIHToRrLDBBE8kB05YPRWfpguhVe69UomLyaqEEAtnbXwGJYwr5MTxsI+ZKaVg9TpjuLfe22hAK2YIXQM6XcykAAGzABEFZWst1AUt0IMdKIq5xo0hP6tqiG3Jfo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mR+NHtXX; arc=none smtp.client-ip=209.85.210.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mR+NHtXX" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-851cbd64814so1237280b3a.1 for ; Mon, 07 Sep 2026 04:26:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788780407; x=1789385207; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=7AEeGlWy9uXP/q/PPr93GfqgOECgNHQd0LWMUmr1tVw=; b=mR+NHtXXZNgFzM27AhG2MF6G4HOtaLwfdm84EUEECwn5sJ7fFhnLdZTEAHKJeUuK2J V0q6tP1iDPwTVq9R2KrCpr70/qNf35QYsxIv7ghP/c6KLl/j0blnWOiOCVdb3besR39A W0HBh+U4aMzVE7yKdgL1htRWncl4cWetRukrks6P7jhTaF9GGlkKs5Ds+hluvk2ra42p Pf3gwPeWYLrXqKJL5mCuw9Q4uXJZlXTJMVq5EXBaCb0EW1Ki+WBcqrMb9gSHWnaEYGHh NW/nA5b3o3poax4mvarzaxndiPpTfvg8nliKK7t7TjbQ2BE+N9VV8tXOdGajeGhJ5yhG a8GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788780407; x=1789385207; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=7AEeGlWy9uXP/q/PPr93GfqgOECgNHQd0LWMUmr1tVw=; b=GExaLXBfzwUup0g26e4zAVKXMD/PIFjStglU5dk+LCOZ5M9u++WlQL/cYXDPFEmqAk 1waUlExvVOtlDmtKEljzeDL4Hwyz2uRZB+9CYIGehGUMv23G/nzI2SKgbG1bIlMY1N7v R5bCc35BVl6WATeZ+OexPhj8FqANpESCTiDa7Bzfl2LcHnaBMZ/vlDEA1Yzrr5BfTV23 glso9HxNaqH9r7NizdUe6/IZ05Thj4hbDchdci2MeIckHbT5ntXrvQssu44o83SkWLjO TonN9Ppxq6WX6psv8euGblAVEBBOK8SPN7ytb2/crXYHx9KtumYC9APakQdqsRMhe1S/ +3Cw== X-Forwarded-Encrypted: i=1; AKwUvBy536fcEl8mftLz8wxeLWTnXKdsZxLGbF57eAZt2oWMUqMZtXWSMdhJmPqPox20ywT7DACQaCVqI26mylA=@vger.kernel.org X-Gm-Message-State: AFuF++n3RBUuP1vIpLeOpfqYqR6sb8WNXYkZzBxXS5ZfGw6l62gOUcVk Q7OXJK8y4UP3ET/eBnnH89hwVTSeKhMvUI1pcSC/zDgkUbASlp6kypRB X-Gm-Gg: AYBFou245Fio6sUcBBnROPW9//vlqgaLdT2vrr+7iNlBDtlCdrsjEPOOgoVrVoF7Nbi OpA/+kj1VfOG4O7E5DPvHqzARjSMCTfZLWw00jLLJfcD4u5eMuN8ptj3LGsYwTNUmyqLk0e5P45 ezhBBUuONXjk+eNM/lPHEYAmBVgNVDLYyIaku/Gwi5aoT8Y48t4mr476e5WV8zXx6ho1/8kWo8R wgiBgHMr5oIPP9B/ciTrLDJkFJnMFxq7l1eaU4FUZqE3U8dnFEI8N/GUHiQZf/hF9Bm+v84i1Xc p10+EGFoBGD3E2e6HiUCoZDFT8G2j54LPYlGvCLi9QgrowOvBIv8oWx4Lm5NOOJw0XalBiXc8/a +N2xNxgjFYRqRX/hAUv+zEOhkS6oNWhqrn/rgxWc7btUV79Q8M2ptvCym0vyHX+BQZr0Mxf+jG4 rlDtsALEmTHuQyPkpo6rXRxwLvHyBtotobVsxZ X-Received: by 2002:a05:6a00:32c4:b0:857:73e2:9107 with SMTP id d2e1a72fcca58-8616c8498dfmr29556641b3a.23.1788780406647; Mon, 07 Sep 2026 04:26:46 -0700 (PDT) Received: from localhost ([2001:da8:7001:11::cb]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-86152045f67sm4265654b3a.18.2026.09.07.04.26.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Sep 2026 04:26:46 -0700 (PDT) From: Inochi Amaoto To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Frank Li , Niklas Cassel , Sherry Sun , Arnd Bergmann , Christian Bruel , Krishna Chaitanya Chundru , Senchuan Zhang , Inochi Amaoto , Alex Elder , Xincheng Zhang , Randolph Lin , Siddharth Vadapalli , Andy Shevchenko , Vidya Sagar , Neil Armstrong , Danilo Krummrich , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20=28The=20Capable=20Hub=29?= , Pengpeng Hou , Anirudh Srinivasan , Gustavo Pimentel Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, Yixun Lan , Longbin Li Subject: [PATCH v5 4/6] dt-bindings: PCI: snps,dw-pcie: Add msi-parent for MSI handle check Date: Mon, 7 Sep 2026 19:26:03 +0800 Message-ID: <20260907112606.465778-5-inochiama@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260907112606.465778-1-inochiama@gmail.com> References: <20260907112606.465778-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The IMSIC device on RISC-V based system does not require ID remapping for MSI. So this device only needs "msi-parent" property for IMSIC-based SoC, and the "msi-map" is not a necessary property. Add new condition for MSI handling on IMSIC based SoC. Signed-off-by: Inochi Amaoto Acked-by: Rob Herring (Arm) --- Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml b/Docu= mentation/devicetree/bindings/pci/snps,dw-pcie.yaml index b3216141881c..91bbbc8924f6 100644 --- a/Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml +++ b/Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml @@ -27,8 +27,11 @@ allOf: - $ref: /schemas/pci/snps,dw-pcie-common.yaml# - if: not: - required: - - msi-map + anyOf: + - required: + - msi-map + - required: + - msi-parent then: properties: interrupt-names: --=20 2.55.0 From nobody Fri Sep 25 23:48:56 2026 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B7E347884C for ; Mon, 7 Sep 2026 11:26:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780412; cv=none; b=nWcOsbyj78/6rjdGfjDbM1OZ1bi3KajNxV7xf/R8Awjs3lzeM4Hv1D6874ZzdslHCGGR7omdTFSdKCyGdWnrKpr76ryxTHPEXH4u4gGskfmyFRDM+7TH9qPJK4tUCq/ciKTyzlO930XeVKIvzhwuj/YaHfxIZH+IPg78yp2fnas= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780412; c=relaxed/simple; bh=tT7VHBhWW/0ENtiLY3CsIjS6UXJSVBBo9toNQ+Sp3xU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hiX3bFawiHRHEt2GXIoqfiN7R/Qb6bPRe1myMIY0KEom+glJv6bfr+chfjjTpFGTwDssIPjYEf5m5wbH6tDWGCMB1DFQ5om05Mrvntcbux7pjd0OEJLi0Ep3MVLQlrZO5ET92y1aEzm3GPCSMfEDcvfNbq5Kb3m5B5uZDEEEVKg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NdbOLJ1k; arc=none smtp.client-ip=209.85.216.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NdbOLJ1k" Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-38dc4553f62so3252861a91.0 for ; Mon, 07 Sep 2026 04:26:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788780410; x=1789385210; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=z4ITEkWMTQ7J+Xoqp3nk8zHPj5XC/FSGr4Xf18I5rrE=; b=NdbOLJ1k9kwgy3emGpJ3IXpC+icgmpKAhnWJCBdMisd/zYkSLcfQOylTpSJvPPB6nz +EGYrNvPrjGAumppqOovKGp5EeGQuX/0X6lylLYFEV6apDxFkkHcGRzm0QHmA06qii5h zNWv8wmsjF7w/9pIBuhwdAt1bsreeIPx4/hxmzD8lS4qTBS1iLfsz7olHaqSdwBpscpJ 2N+rDcBZ+CTIH+HKi3VnOFTbqgX6fpwl3VGXoVyAC5/rxwvXoOQmA4oh9oORLOWnuXY5 +m9PDFmLdLvQ2XAnAc+FigI7VfG8W+eSeIMmbQ0uScMlKjk+YrZNs4HLypF63ZLfssUg OKdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788780410; x=1789385210; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=z4ITEkWMTQ7J+Xoqp3nk8zHPj5XC/FSGr4Xf18I5rrE=; b=sjdrcQhby4573X3xZ7/0hoB61914sz/+dyUJac+NtFEp2mPd4ia/ofQ2+CGrqcrgxs P2UeMs13Xoyp6o9msyfx7U5RckGAkE2tUMmnkm8CQ+rJvxmt9Nyt6dZhBgSPtO1v9ag/ dx6RMOd0EeYKjYhEpv8e6Zg+I3eHx2Cg6T4B0zwFlexOKDUpP5ARKInrDsCd+sJh/uUq S70eMvUvPZv8rs1jje7X/dgM5ffVkH02Pu0v6RbRAnJIF376VgHbBaDm8R+xXuv44V/J wejUtejyt33iU+98CampFpY8bgemDjdyBWt8XFa3kxWlK7uwhtIdVSwRpaf5osTVW+aS mowA== X-Forwarded-Encrypted: i=1; AKwUvBwn4vDfS7URFpKZCJlJ5pFWyF+haw84ZZRsE7+k4oDHry/ozPgZLw7Qnj9NyKke4zmA1eOkj2C8YYZijSQ=@vger.kernel.org X-Gm-Message-State: AFuF++lmRUseLU4xvdaGz9KyJbdqyXRBkEacHp0Hh08AET4wYkXKa9Jn ccQiQD7sdJ77kNp9EChiJTWvw9DXAO7sLC64E44qaBRDvft+y1OUc45m X-Gm-Gg: AYBFou3FJEDBJDx3ttHU/O6/DexpvFMjHMKddZaARl81VioOJTWn6gOMTla9/WuzgsX K5w8cTRknLiIJ5doPeLx+yOkCMm/sVQJfr0+oaUBMdVjrBuyaghQ7aMti1LBEctDs5+NJi5y+CS Q51mIYB4yV+k8M0Tq7EyaF8C8o8Fbt5ywhGkNNlm8Ej90qbKFqWydLBSWSLkYhGSnXHzTxx/Ope h9lnbIWQHWOrmh/70E5PNgsKj2dKSiZXLMgWRqoQWUx/hVCkX2lZmUvCRp4vcp9Su9X/7iPWW1w kRGDY23ZASrfsnIflbydwjP9uiSwFQEwV6qFpbhE5Aowse3mz38gkxLLn2sIwsnYt6biFbrnJtO EmUW4pJG4Xe9nB3FNCjP3aTih8Qt98onu/6t02E26//LF/QO/5oeZmTPKPBGlBuwLG8OAbWmGjz jXskYucsQ8yCJBO0DD5xLF56Vj9PicRQvlp72d X-Received: by 2002:a17:90b:1b44:b0:398:ba96:1afd with SMTP id 98e67ed59e1d1-39b2613249fmr30388041a91.8.1788780409708; Mon, 07 Sep 2026 04:26:49 -0700 (PDT) Received: from localhost ([2001:da8:7001:11::cb]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39b08ca63b3sm26270444a91.11.2026.09.07.04.26.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Sep 2026 04:26:49 -0700 (PDT) From: Inochi Amaoto To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Frank Li , Niklas Cassel , Sherry Sun , Arnd Bergmann , Christian Bruel , Krishna Chaitanya Chundru , Senchuan Zhang , Inochi Amaoto , Alex Elder , Xincheng Zhang , Randolph Lin , Siddharth Vadapalli , Andy Shevchenko , Vidya Sagar , Neil Armstrong , Danilo Krummrich , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20=28The=20Capable=20Hub=29?= , Pengpeng Hou , Anirudh Srinivasan , Gustavo Pimentel Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, Yixun Lan , Longbin Li Subject: [PATCH v5 5/6] dt-bindings: PCI: spacemit: Introduce Spacemit K3 PCIe host controller Date: Mon, 7 Sep 2026 19:26:04 +0800 Message-ID: <20260907112606.465778-6-inochiama@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260907112606.465778-1-inochiama@gmail.com> References: <20260907112606.465778-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add binding support for the PCIe controller on the SpacemiT K3 SoC. This controller is almost a standard Synopsys DesignWare PCIe IP, with some extra link and reset state control. Signed-off-by: Inochi Amaoto --- .../bindings/pci/spacemit,k1-pcie-host.yaml | 50 ++++++++++++++++--- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/Documentation/devicetree/bindings/pci/spacemit,k1-pcie-host.ya= ml b/Documentation/devicetree/bindings/pci/spacemit,k1-pcie-host.yaml index c4c00b5fcdc0..54817d6fd9af 100644 --- a/Documentation/devicetree/bindings/pci/spacemit,k1-pcie-host.yaml +++ b/Documentation/devicetree/bindings/pci/spacemit,k1-pcie-host.yaml @@ -14,26 +14,29 @@ description: > PCIe IP. The controller uses the DesignWare built-in MSI interrupt controller, and supports 256 MSIs. =20 -allOf: - - $ref: /schemas/pci/snps,dw-pcie.yaml# - properties: compatible: - const: spacemit,k1-pcie + enum: + - spacemit,k1-pcie + - spacemit,k3-pcie =20 reg: + minItems: 4 items: - description: DesignWare PCIe registers - description: ATU address space - description: PCIe configuration space - description: Link control registers + - description: Data Bus Interface (DBI) shadow registers. =20 reg-names: + minItems: 4 items: - const: dbi - const: atu - const: config - const: link + - const: dbi2 =20 clocks: items: @@ -66,6 +69,8 @@ properties: interrupt-names: const: msi =20 + msi-parent: true + spacemit,apmu: $ref: /schemas/types.yaml#/definitions/phandle-array description: @@ -84,7 +89,8 @@ patternProperties: =20 properties: phys: - maxItems: 1 + minItems: 1 + maxItems: 6 =20 vpcie3v3-supply: description: @@ -96,13 +102,43 @@ patternProperties: =20 unevaluatedProperties: false =20 +allOf: + - $ref: /schemas/pci/snps,dw-pcie.yaml# + - if: + properties: + compatible: + contains: + const: spacemit,k1-pcie + then: + properties: + reg: + maxItems: 4 + + reg-names: + maxItems: 4 + + patternProperties: + '^pcie@': + properties: + phys: + maxItems: 1 + + required: + - interrupts + - interrupt-names + else: + properties: + reg: + minItems: 5 + + reg-names: + minItems: 5 + required: - clocks - clock-names - resets - reset-names - - interrupts - - interrupt-names - spacemit,apmu =20 unevaluatedProperties: false --=20 2.55.0 From nobody Fri Sep 25 23:48:56 2026 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11D6547ACC7 for ; Mon, 7 Sep 2026 11:26:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780415; cv=none; b=FtJGiUwtCg/juNZIn2EN22Pe8pKzh3j0utIzZBxC2dGQ5NgN7j74kl83h7Wxcn5MuJe5OZlC+MObaD+wVsUsGGyv5VH3m9B6fS7PsaYOdTPZf2Ea+/94sVPS2tKYHZOrMk1a1gg570//Wv7Refb5EHwNAItOjOiZkvNgs6cXaHc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788780415; c=relaxed/simple; bh=6xPsWRUPeleJLK8WJ2QWq0vWWv1E8zE0psVdoiyxOqc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fNcMeNK/pjCLqBhtI/js/3CbL/6sXHOksKnk6D81TXx7LpyxsZOjVAFYEQpxmrVCaMx74Iq2R/ElpWXwsiFM97wa9cWEwbDSp6jIw2t753EiMSlhLvv8DaKaS8wH6gdkBU1OIMg9asqHY1MjT1FNcvXKAdJyN4RIF9VbYIa8kqk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ArUfWelN; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ArUfWelN" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2d944747d41so36221675ad.0 for ; Mon, 07 Sep 2026 04:26:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788780412; x=1789385212; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=/VmjijarNN4xgegaOIIjybmiUp5b9EVo/zWnU+ss9Bo=; b=ArUfWelNAwpel3U0GHpNXZ1SMXSs1FQcjtrUvTZd4xecIjVn4dH8ToDzt/3vtyI87y Ksxt2M72ohtJBt5CbDi7wHbyFa/kQnvMpykOkgCwcdPWZXSEmHanK15L6X7DOdoxRJL9 vmpeB0TvpXbKs+P1jMfXZR4KSb3EhbP2UnjwzwlIQ7iZHjgb+0a3E0NefibgU+BkkqI+ C3B7/4HxEVXbnEkm1Nvyl92XRKAbmXKMCR4QQAe7z0z9QT758rkvKzLvm+TgcRIUZELp 57rrC8iAyW7dkfBGG7vWl0kODD2EjgUCVcJhBeX+jPEHNJZ3s2kDKSx9WOB/wFVwsnOi T25Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788780412; x=1789385212; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=/VmjijarNN4xgegaOIIjybmiUp5b9EVo/zWnU+ss9Bo=; b=JulT6JtywK+Mx34i+RXE0xpmUOaH25MlJYMEHlhMuso6AGfPVAptIAYTQs3nYBvli/ DQIf7uSlpTeFciCGN8Y14QLPkqesZyUKs2ngnFvsoWEgLCUPdhDUHQqY/i2MW3hLu6+L t/wz/xc2oz65qHw0dUwimCJ4nMMxdgA/keY3SxQ88Ttoy+cm4rDrk+BDBTjeTGsIdUIs WErlxhU1pJwFuUmpAtSg89sI0MwW1Oz3IP81p9ab0ZSxBUuhRk65WS/QETiYRBxZwDKG SXsBF38dEroxDKAjAl2QlIcfLOSpG+yAagG6m7JAJXHfVMABDvGC/sg3dv/HpENW1YPG OBWA== X-Forwarded-Encrypted: i=1; AKwUvBxqlC/EUjVHY9K21vkX7B5aGG/Evfg6pBfvBbD8Fwjg/BtgDnBoHOWBQJwRACXIZa5RjzWvUfR/h0HwO7k=@vger.kernel.org X-Gm-Message-State: AFuF++kmv6TENacSzJ2ep9gVJP/4DbLtqdNXaydDdlP4cKdNEVdm5rhc pb1UHiK5Q/roUlqVfYXEfNR0XInh8NmiEnsBTRvSCtAsC5KqaWsvtrl1 X-Gm-Gg: AYBFou0mcnnlTX1CDNzCN4BzmEiDou7UHoQLTIX+YPeuQnzvW4O+nEYc3sCyq3QmxIe yaRvD0tftwnn5YCYZDRP6KvOBwKmZikOX6nOpfkGlzTVX7Ai3WjfXvR563CejL8OTkKgz595/ku 4UDbhZzEj8qUlMFXpDbQMyF1op4rdBnqoBxyqITA5nFKkrfXC77rLlHq3a0yYB7K0uzrVV2CUCj ytf6mjJ8lLoJVXJKMOhWRAcGCNRTdqopElrU9Fan+cxRBdZlLjdde9vtVHm3BX4SFBB1tFtyPxl pxBAoAh5rbe41rer2qIPYwelrmYdgu42Hu847LdCEe3FNFMjRZbJ0qcGG47IbW+XyKMgB9pHmvO SEuamgo2sprnHlGqD5oJf5YblnViC7XUL4JIiyg/x3npwiQN9XhYfYK//RVIHe9HL9M5j3OlJoa S9zaMtVyIpxi8MwAImqmpELhyjv6SGAxnOto3a X-Received: by 2002:a17:902:e951:b0:2d8:d4ce:7e3b with SMTP id d9443c01a7336-2db126289bbmr311560445ad.16.1788780412378; Mon, 07 Sep 2026 04:26:52 -0700 (PDT) Received: from localhost ([2001:da8:7001:11::cb]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2db1982c63fsm41788675ad.42.2026.09.07.04.26.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Sep 2026 04:26:52 -0700 (PDT) From: Inochi Amaoto To: Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Frank Li , Niklas Cassel , Sherry Sun , Arnd Bergmann , Christian Bruel , Krishna Chaitanya Chundru , Senchuan Zhang , Inochi Amaoto , Alex Elder , Xincheng Zhang , Randolph Lin , Siddharth Vadapalli , Andy Shevchenko , Vidya Sagar , Neil Armstrong , Danilo Krummrich , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20=28The=20Capable=20Hub=29?= , Pengpeng Hou , Anirudh Srinivasan , Gustavo Pimentel Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, Yixun Lan , Longbin Li Subject: [PATCH v5 6/6] PCI: spacemit-k1: Add Spacemit K3 PCIe host controller support Date: Mon, 7 Sep 2026 19:26:05 +0800 Message-ID: <20260907112606.465778-7-inochiama@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260907112606.465778-1-inochiama@gmail.com> References: <20260907112606.465778-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The PCIe controller on Spacemit K3 is almost a standard Synopsys DesignWare PCIe IP with extra link and reset control. Unlike the PCIe controller on K1, this controller supports external MSI interrupt controller and can use multiple PHYs at the same time. Add driver to support PCIe controller on Spacemit K3 PCIe. Signed-off-by: Inochi Amaoto --- drivers/pci/controller/dwc/Kconfig | 4 +- drivers/pci/controller/dwc/pcie-spacemit-k1.c | 132 ++++++++++++++++++ 2 files changed, 134 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/dwc/Kconfig b/drivers/pci/controller/dw= c/Kconfig index dcfbe7e229fd..f9c27165260e 100644 --- a/drivers/pci/controller/dwc/Kconfig +++ b/drivers/pci/controller/dwc/Kconfig @@ -443,7 +443,7 @@ config PCIE_SOPHGO_DW Sophgo SoCs. =20 config PCIE_SPACEMIT_K1 - tristate "SpacemiT K1 PCIe controller (host mode)" + tristate "SpacemiT PCIe controller (host mode)" depends on ARCH_SPACEMIT || COMPILE_TEST depends on HAS_IOMEM select PCIE_DW_HOST @@ -451,7 +451,7 @@ config PCIE_SPACEMIT_K1 default ARCH_SPACEMIT help Enables support for the DesignWare based PCIe controller in - the SpacemiT K1 SoC operating in host mode. Three controllers + the SpacemiT SoC operating in host mode. Three controllers are available on the K1 SoC; the first of these shares a PHY with a USB 3.0 host controller (one or the other can be used). =20 diff --git a/drivers/pci/controller/dwc/pcie-spacemit-k1.c b/drivers/pci/co= ntroller/dwc/pcie-spacemit-k1.c index c610b367412a..5031b688fdab 100644 --- a/drivers/pci/controller/dwc/pcie-spacemit-k1.c +++ b/drivers/pci/controller/dwc/pcie-spacemit-k1.c @@ -28,8 +28,18 @@ #define SMLH_LINK_UP BIT(1) #define RDLH_LINK_UP BIT(12) =20 +#define INTR_STATUS 0x0010 + #define INTR_ENABLE 0x0014 #define MSI_CTRL_INT BIT(11) +#define RDLH_LINK_UP_INT BIT(20) + +#define K3_PHY_AHB_IRQSTATUS_INTX 0x0008 + +#define K3_ADDR_INTR_STATUS1 0x0018 + +#define K3_CACHE_MSTR_AWCACHE_MODE GENMASK(14, 11) +#define K3_CACHE_MSTR_AWCACHE_BEHAVIOR 0xf =20 /* Some controls require APMU regmap access */ #define SYSCON_APMU "spacemit,apmu" @@ -44,6 +54,9 @@ =20 #define PCIE_CONTROL_LOGIC 0x0004 #define PCIE_SOFT_RESET BIT(0) +#define PCIE_PERSTN_OE BIT(24) +#define PCIE_PERSTN_OUT BIT(25) +#define PCIE_IGNORE_PERSTN BIT(31) =20 struct k1_pcie; =20 @@ -303,6 +316,116 @@ static int k1_pcie_parse_port(struct k1_pcie *k1) return ret; } =20 +static int k3_pcie_init(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); + struct k1_pcie *k1 =3D to_k1_pcie(pci); + u32 reset_ctrl =3D k1->pmu_off + PCIE_CLK_RESET_CONTROL; + u32 val; + int ret; + + regmap_clear_bits(k1->pmu, reset_ctrl, LTSSM_EN); + + k1_pcie_toggle_soft_reset(k1); + + /* K3: Set IGNORE_PERSTN and drive PERSTN_OE high (assert reset) */ + regmap_update_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC, + PCIE_IGNORE_PERSTN | PCIE_PERSTN_OE | PCIE_PERSTN_OUT, + PCIE_IGNORE_PERSTN | PCIE_PERSTN_OE); + + ret =3D k1_pcie_enable_resources(k1); + if (ret) + goto failed_resources; + + regmap_set_bits(k1->pmu, reset_ctrl, PCIE_AUX_PWR_DET); + regmap_clear_bits(k1->pmu, reset_ctrl, APP_HOLD_PHY_RST); + + ret =3D phy_bulk_init(k1->phy_count, k1->phys); + if (ret) + goto failed_phy; + + msleep(PCIE_T_PVPERL_MS); + + regmap_set_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC, + PCIE_PERSTN_OUT | PCIE_PERSTN_OE); + + val =3D dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF); + val =3D u32_replace_bits(val, BIT(7), + GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC); + dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, val); + + k1_pcie_set_device_id(k1); + + /* Finally, as a workaround, disable ASPM L1 */ + k1_pcie_disable_aspm_l1(k1); + + return 0; + +failed_phy: + k1_pcie_disable_resources(k1); +failed_resources: + regmap_update_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC, + PCIE_PERSTN_OUT | PCIE_PERSTN_OE | PCIE_IGNORE_PERSTN, + PCIE_PERSTN_OUT | PCIE_PERSTN_OE); + + return ret; +} + +static void k3_pcie_deinit(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); + struct k1_pcie *k1 =3D to_k1_pcie(pci); + + /* Assert fundamental reset (drive PERST# low) */ + regmap_update_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC, + PCIE_PERSTN_OUT | PCIE_PERSTN_OE, + PCIE_PERSTN_OE); + + phy_bulk_exit(k1->phy_count, k1->phys); + + k1_pcie_disable_resources(k1); +} + +static int k3_pcie_msi_host_init(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); + u32 val; + + dw_pcie_dbi_ro_wr_en(pci); + + /* For IMSIC interrupt */ + val =3D dw_pcie_readl_dbi(pci, COHERENCY_CONTROL_3_OFF); + val =3D u32_replace_bits(val, K3_CACHE_MSTR_AWCACHE_BEHAVIOR, + K3_CACHE_MSTR_AWCACHE_MODE); + dw_pcie_writel_dbi(pci, COHERENCY_CONTROL_3_OFF, val); + + dw_pcie_dbi_ro_wr_dis(pci); + + return 0; +} + +static const struct dw_pcie_host_ops k3_pcie_host_ops =3D { + .init =3D k3_pcie_init, + .deinit =3D k3_pcie_deinit, + .msi_init =3D k3_pcie_msi_host_init, +}; + +static int k3_pcie_parse_port(struct k1_pcie *k1) +{ + u32 status0, status1, status2; + + /* This register require a RAW for cleanup */ + status0 =3D readl_relaxed(k1->link + K3_PHY_AHB_IRQSTATUS_INTX); + status1 =3D readl_relaxed(k1->link + INTR_STATUS); + status2 =3D readl_relaxed(k1->link + K3_ADDR_INTR_STATUS1); + + writel_relaxed(status0, k1->link + K3_PHY_AHB_IRQSTATUS_INTX); + writel_relaxed(status1, k1->link + INTR_STATUS); + writel_relaxed(status2, k1->link + K3_ADDR_INTR_STATUS1); + + return k1_pcie_parse_port(k1); +} + static int k1_pcie_probe(struct platform_device *pdev) { const struct k1_pcie_device_data *data; @@ -380,8 +503,17 @@ static const struct k1_pcie_device_data k1_pcie_device= _data =3D { .device_id =3D PCI_DEVICE_ID_SPACEMIT_K1, }; =20 +static const struct k1_pcie_device_data k3_pcie_device_data =3D { + .host_ops =3D &k3_pcie_host_ops, + .ops =3D &k1_pcie_ops, + .parse_port =3D k3_pcie_parse_port, + .max_phy_count =3D 6, + .device_id =3D PCI_DEVICE_ID_SPACEMIT_K3, +}; + static const struct of_device_id k1_pcie_of_match_table[] =3D { { .compatible =3D "spacemit,k1-pcie", .data =3D &k1_pcie_device_data }, + { .compatible =3D "spacemit,k3-pcie", .data =3D &k3_pcie_device_data }, { } }; MODULE_DEVICE_TABLE(of, k1_pcie_of_match_table); --=20 2.55.0