From patchwork Mon Dec 9 07:19:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Wang X-Patchwork-Id: 13898985 Received: from mail-oa1-f52.google.com (mail-oa1-f52.google.com [209.85.160.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 8814622C6E8; Mon, 9 Dec 2024 07:19:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733728800; cv=none; b=aXClWaNhBgaARpmKNW3XutOhQ11BnXuq9Qu1IydyywVeGN2I/eCuiUDW/cecOn8jPPaxLmi1ovn7+3lzZJUKVa9ECnstzofmt9adgJbX+PJkX0+4i1O99tj34mLg2Ub7TYedp/8G+KA8k0UOgrCf9Zjn2Y0IXfyyval+DcwqG7A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733728800; c=relaxed/simple; bh=cHJfwOz6SE70EfLI4BsWXItyRAe+eKtShLfZNU7eGSM=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Eqx3TJH7WQSHha/F9dF2DyTc6s/fImuvD2MU7AstiupDZCgUPoJQcHaT3Bbd8FuR2QDU6G5ZxczRgIjMX17KkyAqt4zFrEa8kx1Tf9RbUwTPznDppzH1m0N73y1PUrzaRvwLe9MqJWETGtO2UBM7Cu7AxEG7SA7j65mJIuXnzYE= 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=UN+e72b6; arc=none smtp.client-ip=209.85.160.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="UN+e72b6" Received: by mail-oa1-f52.google.com with SMTP id 586e51a60fabf-29e585968a8so2467890fac.3; Sun, 08 Dec 2024 23:19:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733728798; x=1734333598; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=DukJAPZCrQobp9vqG6nmbeWCxatZIx1mt+QBoi3MQKQ=; b=UN+e72b6mymLyn9sjXtt8s6YIOSSB+wW1NjYtEPnuzp2YWatleqqE3fW7MEJoLF9Mo Rt8BtTILy3xmNTRJfadJqjZnHsL3c82Kyw3H+r+i8mryCpyqYnSenNhB+Ef7QA2D+uoN RqmJYY1awWoUf3NE7AQOQ0c27pGA8d9qMeMhxIdF6YSl35bfDItZT4E9B9Kn2egZZ46n 0L54FazCf53G1vKcBgHxJ9zuYVXhGQINYxGpjOtVC6tLp4P0tEvWCYF0QE2e2/4ikR0Y kL773dGhiR7ZCTFVZS2zavsWBk3IQPYOMYJGeLroy92rI+SMf/JVw2LjYiiMejLPx4hS tvug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733728798; x=1734333598; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DukJAPZCrQobp9vqG6nmbeWCxatZIx1mt+QBoi3MQKQ=; b=A67AsyHsw3xKIwuIcTisuEKFuPiXDDmB9BiO0CH8Y+JIaPdob9aczMQN3u1d9Y13sb rpnzFcMKuwV56Efz3GtnFVfJ+v5XfCR2OCNQZLX5qY4mnWUUEdgIGAWl/5pYv3P0MYqU SAXgyIPny/3aLgBfmjr/S0As2XhyhOOroyu3pcpisFROWAjNzI9+JKd8BdoKiZpAXCBf mfKLlauqk/7AVQ141wkBgGQ+TeHec48022HCpLpcaw031A/PRYMo3Yg0vUxbzXGvGweu FDGmCI3mNJ7HZP0+IhCPsDYRp+YWxMVzMIUEwzaX1abWpodrGqEtdU6PvAcJ/ToNTmjP 62lA== X-Forwarded-Encrypted: i=1; AJvYcCU3Kt9HqXmyBqe34kpwulMvNp4tXRvZa8Vlxub1GV82cYkdCg+n6mcjxO/9upItSXjPddfEEjqL17U1@vger.kernel.org, AJvYcCXLu9Jek0iz0UpkHMreUJbM8LIMDSKCVK1P2c3SMn6VLRsDSfBr7DfD9CK47zWiiaG5C2umXuSLnBJ4E8g0@vger.kernel.org, AJvYcCXapSt6IoClhwLL2pfj8FZLSim1KgOjzFF+Oy3sZaPCUpedwXXmorWMbMXCuNhnm/XJj5zrpb8rdqOd@vger.kernel.org X-Gm-Message-State: AOJu0Yw6yr0j+h5UaTVXvX5+7glkGKxut4e5YqAvOGX6McHssNABg+/V OVX6ZF843+BBx5zCKCmH0tmZ854qTG7uPZftwIQ9SjIy4MC9L49Kb0h/jeZd X-Gm-Gg: ASbGncv2j/X8OCE/M2IIGrS6+5Jczr7Q7p0GytSwnUtbxS09Jry+qmcQNuidIYIMTz2 SDpAVpORi7D9B1lrbCliRnfw0mkm8KHcHZ7Vuoq08tpqjhPEJX1OJETvLdSYnoqO6qnxjK2l6Sm b23pHZJg7C4Uuea5n3/mbjrNwsQc8EdmSaSSMsJ8BaPv9c/YWMyZsXytdMZIqIlMPWIiCp0XqNc 1KjCCkUWasowq7OfgY/K53ydwNiHmx8AbfPrknMuEyUtSwbT14aXEdLlAhB X-Google-Smtp-Source: AGHT+IFW63Bwfbwt1r7nEra6/X0zHjZplwbZEEvxrVjHJQWcqJ6dsspcIrEAlljRCDVj38n7O3xh9g== X-Received: by 2002:a05:6871:c709:b0:29e:392d:afc8 with SMTP id 586e51a60fabf-29f7329ae2dmr10035201fac.15.1733728787275; Sun, 08 Dec 2024 23:19:47 -0800 (PST) Received: from localhost.localdomain ([122.8.183.87]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-29f5677528bsm2530681fac.28.2024.12.08.23.19.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Dec 2024 23:19:46 -0800 (PST) From: Chen Wang To: kw@linux.com, u.kleine-koenig@baylibre.com, aou@eecs.berkeley.edu, arnd@arndb.de, bhelgaas@google.com, unicorn_wang@outlook.com, conor+dt@kernel.org, guoren@kernel.org, inochiama@outlook.com, krzk+dt@kernel.org, lee@kernel.org, lpieralisi@kernel.org, manivannan.sadhasivam@linaro.org, palmer@dabbelt.com, paul.walmsley@sifive.com, pbrobinson@gmail.com, robh@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-riscv@lists.infradead.org, chao.wei@sophgo.com, xiaoguang.xing@sophgo.com, fengchun.li@sophgo.com, helgaas@kernel.org Subject: [PATCH v2 1/5] dt-bindings: pci: Add Sophgo SG2042 PCIe host Date: Mon, 9 Dec 2024 15:19:38 +0800 Message-Id: <05998df400a64734308e986069ca0b337618e464.1733726572.git.unicorn_wang@outlook.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Chen Wang Add binding for Sophgo SG2042 PCIe host controller. Signed-off-by: Chen Wang --- .../bindings/pci/sophgo,sg2042-pcie-host.yaml | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 Documentation/devicetree/bindings/pci/sophgo,sg2042-pcie-host.yaml diff --git a/Documentation/devicetree/bindings/pci/sophgo,sg2042-pcie-host.yaml b/Documentation/devicetree/bindings/pci/sophgo,sg2042-pcie-host.yaml new file mode 100644 index 000000000000..aec31ec97092 --- /dev/null +++ b/Documentation/devicetree/bindings/pci/sophgo,sg2042-pcie-host.yaml @@ -0,0 +1,141 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pci/sophgo,sg2042-pcie-host.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Sophgo SG2042 PCIe Host (Cadence PCIe Wrapper) + +description: + Sophgo SG2042 PCIe host controller is based on the Cadence PCIe core. + +maintainers: + - Chen Wang + +properties: + compatible: + const: sophgo,sg2042-pcie-host + + reg: + maxItems: 2 + + reg-names: + items: + - const: reg + - const: cfg + + vendor-id: + const: 0x1f1c + + device-id: + const: 0x2042 + + msi: + type: object + $ref: /schemas/interrupt-controller/msi-controller.yaml# + unevaluatedProperties: false + + properties: + compatible: + items: + - const: sophgo,sg2042-pcie-msi + + interrupts: + maxItems: 1 + + interrupt-names: + const: msi + + msi-parent: true + + sophgo,pcie-port: + $ref: /schemas/types.yaml#/definitions/uint32 + description: | + SG2042 uses Cadence IP, every IP is composed of 2 cores(called link0 + & link1 as Cadence's term). "sophgo,pcie-port" is used to identify which + core/link the pcie host controller node corresponds to. + + The Cadence IP has two modes of operation, selected by a strap pin. + + In the single-link mode, the Cadence PCIe core instance associated + with Link0 is connected to all the lanes and the Cadence PCIe core + instance associated with Link1 is inactive. + + In the dual-link mode, the Cadence PCIe core instance associated + with Link0 is connected to the lower half of the lanes and the + Cadence PCIe core instance associated with Link1 is connected to + the upper half of the lanes. + + SG2042 contains 2 Cadence IPs and configures the Cores as below: + + +-- Core(Link0) <---> pcie_rc0 +-----------------+ + | | | + Cadence IP 1 --+ | cdns_pcie0_ctrl | + | | | + +-- Core(Link1) <---> disabled +-----------------+ + + +-- Core(Link0) <---> pcie_rc1 +-----------------+ + | | | + Cadence IP 2 --+ | cdns_pcie1_ctrl | + | | | + +-- Core(Link1) <---> pcie_rc2 +-----------------+ + + pcie_rcX is pcie node ("sophgo,sg2042-pcie-host") defined in DTS. + cdns_pcie0_ctrl is syscon node ("sophgo,sg2042-pcie-ctrl") defined in DTS + + cdns_pcieX_ctrl contains some registers shared by pcie_rcX, even two + RC(Link)s may share different bits of the same register. For example, + cdns_pcie1_ctrl contains registers shared by link0 & link1 for Cadence IP 2. + + "sophgo,pcie-port" is defined to flag which core(link) the rc maps to, with + this we can know what registers(bits) we should use. + + sophgo,syscon-pcie-ctrl: + $ref: /schemas/types.yaml#/definitions/phandle + description: + Phandle to the PCIe System Controller DT node. It's required to + access some MSI operation registers shared by PCIe RCs. + +allOf: + - $ref: cdns-pcie-host.yaml# + +required: + - compatible + - reg + - reg-names + - vendor-id + - device-id + - sophgo,syscon-pcie-ctrl + - sophgo,pcie-port + +additionalProperties: true + +examples: + - | + #include + + pcie@62000000 { + compatible = "sophgo,sg2042-pcie-host"; + device_type = "pci"; + reg = <0x62000000 0x00800000>, + <0x48000000 0x00001000>; + reg-names = "reg", "cfg"; + #address-cells = <3>; + #size-cells = <2>; + ranges = <0x81000000 0 0x00000000 0xde000000 0 0x00010000>, + <0x82000000 0 0xd0400000 0xd0400000 0 0x0d000000>; + bus-range = <0x80 0xbf>; + vendor-id = <0x1f1c>; + device-id = <0x2042>; + cdns,no-bar-match-nbits = <48>; + sophgo,pcie-port = <0>; + sophgo,syscon-pcie-ctrl = <&cdns_pcie1_ctrl>; + msi-parent = <&msi_pcie>; + msi_pcie: msi { + compatible = "sophgo,sg2042-pcie-msi"; + msi-controller; + interrupt-parent = <&intc>; + interrupts = <123 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "msi"; + }; + }; From patchwork Mon Dec 9 07:19:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Wang X-Patchwork-Id: 13898986 Received: from mail-ot1-f52.google.com (mail-ot1-f52.google.com [209.85.210.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 4247F214A66; Mon, 9 Dec 2024 07:20:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733728809; cv=none; b=HXmk6BQF6ek/NxOYi4K2URriltSW5iGc4QnZxRbY/jxw9h6ogfZ6reHrabduwnXgUtnIOsAmWfGl61y26eYPbKk/GACq4oQ09gOp+JK2f2BqGE+mkXL926E7RcDQLGMz/ryE2J+5QENetnpGgB0aBE05RGMLA52j53LsWxaoZU4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733728809; c=relaxed/simple; bh=VQVnV6TgCF+QklWk/T/6vRX1jXEenVJSyjVPMr4Zkeg=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qRHh01QRxeQB8Ao0Y0rmkDPe09++49tcx6pANGH4Rko8APx233cwHhT0heKqg+X9cMufLWVpaCoX26B1radkU9sd1MczsB/EV/K6eoi4WBEPDdfyxmUYtSvBAwSDfnSuuAKi/zyR4c5zj0gcSn/Sqe3XhVuMbQQRPGUiqVaTX9c= 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=Bf1E04Jg; arc=none smtp.client-ip=209.85.210.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="Bf1E04Jg" Received: by mail-ot1-f52.google.com with SMTP id 46e09a7af769-71de22bc86bso531711a34.0; Sun, 08 Dec 2024 23:20:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733728806; x=1734333606; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Qy+SySC8uT7axLImRelO7rcuwP47KlXmSIHlHB9UL0c=; b=Bf1E04JgILcWNgY8f35OHU05l9j8l/wCzRpKa8z55YrnnL7XpkX+wQpOlfY5Vkktzf PFcz45+ypi7B++gpoEHw8ITJBeraILu96aqncPJClUUaMbRhhUTuRE0eQ03CszCH0Tfz i51BSYeT/pxU7rQAaI9/jDE2Ew3/FHARmWGzfo2mzy4XX4gc/nVXV3SBIhSbi9VVeyha BP17avVHm441i6aQjq7Yo2A/ZvcSWWRwgOlpcX5p1MXxSD+jEnj6G5x+t3DCRTRgLb7e WKvlP2iurwDfxgGMi4J+nmPxTAnristVHL51P81Nt8kXFrMfe4kSM3SSxB56hqSUIpPo P5Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733728806; x=1734333606; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Qy+SySC8uT7axLImRelO7rcuwP47KlXmSIHlHB9UL0c=; b=SD65A1MsJnMg0VoZ3FTGkRS7k6aUhJLLjvjCbfXwFa5AsF/qox4KtxB50x0Y+eDHOy 7b27XceUHoZ+Z2Zy0q8Nxz11xvmTwccrNEFl0mrhq5WvlmECH9y574I78+fc+rSdHlqS Bg4ZeOd8dwi8DUMnwnk2cI/JEEQRWESBjW72dN/raCdRU+SLRcN3cYB77rEyJu0SPqiB tsK+SXJztGwHlKwFRcHsGOpI5q3RgfEFz7Kx5TXwY/ltI3hxMSIpYFrRpp5YlR2k20kQ Z39MExy1fU4v0F9aDAFc25MO+l2kqe6/7qevXFvqtk3tSrVsNrKMyYaFGJajTgnhuozs 8exw== X-Forwarded-Encrypted: i=1; AJvYcCVXEbIqSyI2Kl578gq9bb7wVOGUa8PJL4FIGtFoLXxV3nv4qlfHqX4r3Unsaqms88pLp8OrxBfsSC8T@vger.kernel.org, AJvYcCWIGrBamn+LXPZph1Twlfo9CWguYhg35dFa5Ty+ypS2nAhSdNTE2PtbPJGUhDOjowS6JO2ejSn4avy6vMfp@vger.kernel.org, AJvYcCXmCxsoC9jZDXdDgnBJ06qSIolpjgdlavJLG4roBTsMsiD/uadJRWP3cZvPX2tzND9U+vQK/r7Dc418@vger.kernel.org X-Gm-Message-State: AOJu0Yx5EhSFCKzBOcttx37EnLgruzksNfJft8RWjUwABgfggWG3XQed 9lZraRW7z5fiUWHelAhk4smDtBK6PO64v93f7tlr3bm/ZEL5J/+i X-Gm-Gg: ASbGncvY3yO14QpII/8IudRAq75LqJW30e93gr9K2Jcp5L5QEN6BJ65SGZXC1PMN+Cy nTdIt6TscnzhD5XUcirizBVWoML/z74pFUlc8QKpAFyCKGQLorHI1hf8b0QwCqMaXnw66oaiRkf dsHWM25UnZBsqzNxQtApteiwEE5Ufz2h0Wc87KSPDvdrnvbX6XFTj9pFxbOPbJcnLNKEyJb24oO 6JIJH/0Em3qyllacZhl6f1NAu7L8b3Wf0oQcmARxOSdX4HWzNh3wtiMpKko X-Google-Smtp-Source: AGHT+IFcqfipl8+sT48kLp/Ekl26lTrQzWhqZhvEdPDGebDfwlRab5A+MpVVSDNoNiQUMyoWcaah/w== X-Received: by 2002:a05:6830:2a87:b0:718:4073:428f with SMTP id 46e09a7af769-71dcf4e8befmr7674571a34.16.1733728805987; Sun, 08 Dec 2024 23:20:05 -0800 (PST) Received: from localhost.localdomain ([122.8.183.87]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-71dec4d2f87sm678361a34.60.2024.12.08.23.20.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Dec 2024 23:20:05 -0800 (PST) From: Chen Wang To: kw@linux.com, u.kleine-koenig@baylibre.com, aou@eecs.berkeley.edu, arnd@arndb.de, bhelgaas@google.com, unicorn_wang@outlook.com, conor+dt@kernel.org, guoren@kernel.org, inochiama@outlook.com, krzk+dt@kernel.org, lee@kernel.org, lpieralisi@kernel.org, manivannan.sadhasivam@linaro.org, palmer@dabbelt.com, paul.walmsley@sifive.com, pbrobinson@gmail.com, robh@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-riscv@lists.infradead.org, chao.wei@sophgo.com, xiaoguang.xing@sophgo.com, fengchun.li@sophgo.com, helgaas@kernel.org Subject: [PATCH v2 2/5] PCI: sg2042: Add Sophgo SG2042 PCIe driver Date: Mon, 9 Dec 2024 15:19:57 +0800 Message-Id: <1d82eff3670f60df24228e5c83cf663c6dd61eaf.1733726572.git.unicorn_wang@outlook.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Chen Wang Add support for PCIe controller in SG2042 SoC. The controller uses the Cadence PCIe core programmed by pcie-cadence*.c. The PCIe controller will work in host mode only. Signed-off-by: Chen Wang --- drivers/pci/controller/cadence/Kconfig | 11 + drivers/pci/controller/cadence/Makefile | 1 + drivers/pci/controller/cadence/pcie-sg2042.c | 534 +++++++++++++++++++ 3 files changed, 546 insertions(+) create mode 100644 drivers/pci/controller/cadence/pcie-sg2042.c diff --git a/drivers/pci/controller/cadence/Kconfig b/drivers/pci/controller/cadence/Kconfig index 8a0044bb3989..ddf86bbe687d 100644 --- a/drivers/pci/controller/cadence/Kconfig +++ b/drivers/pci/controller/cadence/Kconfig @@ -42,6 +42,16 @@ config PCIE_CADENCE_PLAT_EP endpoint mode. This PCIe controller may be embedded into many different vendors SoCs. +config PCIE_SG2042 + bool "Sophgo SG2042 PCIe controller (host mode)" + depends on ARCH_SOPHGO || COMPILE_TEST + depends on OF + select PCIE_CADENCE_HOST + help + Say Y here if you want to support the Sophgo SG2042 PCIe platform + controller in host mode. Sophgo SG2042 PCIe controller uses Cadence + PCIe core. + config PCI_J721E bool @@ -67,4 +77,5 @@ config PCI_J721E_EP Say Y here if you want to support the TI J721E PCIe platform controller in endpoint mode. TI J721E PCIe controller uses Cadence PCIe core. + endmenu diff --git a/drivers/pci/controller/cadence/Makefile b/drivers/pci/controller/cadence/Makefile index 9bac5fb2f13d..89aa316f54ac 100644 --- a/drivers/pci/controller/cadence/Makefile +++ b/drivers/pci/controller/cadence/Makefile @@ -4,3 +4,4 @@ obj-$(CONFIG_PCIE_CADENCE_HOST) += pcie-cadence-host.o obj-$(CONFIG_PCIE_CADENCE_EP) += pcie-cadence-ep.o obj-$(CONFIG_PCIE_CADENCE_PLAT) += pcie-cadence-plat.o obj-$(CONFIG_PCI_J721E) += pci-j721e.o +obj-$(CONFIG_PCIE_SG2042) += pcie-sg2042.o \ No newline at end of file diff --git a/drivers/pci/controller/cadence/pcie-sg2042.c b/drivers/pci/controller/cadence/pcie-sg2042.c new file mode 100644 index 000000000000..78893d3b5c47 --- /dev/null +++ b/drivers/pci/controller/cadence/pcie-sg2042.c @@ -0,0 +1,534 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * pcie-sg2042 - PCIe controller driver for Sophgo SG2042 SoC + * + * Copyright (C) 2024 Sophgo Technology Inc. + * Copyright (C) 2024 Chen Wang + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../../../irqchip/irq-msi-lib.h" + +#include "pcie-cadence.h" + +/* + * SG2042 PCIe controller supports two ways to report MSI: + * + * - Method A, the PCIe controller implements an MSI interrupt controller + * inside, and connect to PLIC upward through one interrupt line. + * Provides memory-mapped MSI address, and by programming the upper 32 + * bits of the address to zero, it can be compatible with old PCIe devices + * that only support 32-bit MSI address. + * + * - Method B, the PCIe controller connects to PLIC upward through an + * independent MSI controller "sophgo,sg2042-msi" on the SOC. The MSI + * controller provides multiple(up to 32) interrupt sources to PLIC. + * Compared with the first method, the advantage is that the interrupt + * source is expanded, but because for SG2042, the MSI address provided by + * the MSI controller is fixed and only supports 64-bit address(> 2^32), + * it is not compatible with old PCIe devices that only support 32-bit MSI + * address. + * + * Method A & B can be configured in DTS, default is Method B. + */ + +#define MAX_MSI_IRQS 8 +#define MAX_MSI_IRQS_PER_CTRL 1 +#define MAX_MSI_CTRLS (MAX_MSI_IRQS / MAX_MSI_IRQS_PER_CTRL) +#define MSI_DEF_NUM_VECTORS MAX_MSI_IRQS +#define BYTE_NUM_PER_MSI_VEC 4 + +#define REG_CLEAR 0x0804 +#define REG_STATUS 0x0810 +#define REG_LINK0_MSI_ADDR_SIZE 0x085C +#define REG_LINK1_MSI_ADDR_SIZE 0x080C +#define REG_LINK0_MSI_ADDR_LOW 0x0860 +#define REG_LINK0_MSI_ADDR_HIGH 0x0864 +#define REG_LINK1_MSI_ADDR_LOW 0x0868 +#define REG_LINK1_MSI_ADDR_HIGH 0x086C + +#define REG_CLEAR_LINK0_BIT 2 +#define REG_CLEAR_LINK1_BIT 3 +#define REG_STATUS_LINK0_BIT 2 +#define REG_STATUS_LINK1_BIT 3 + +#define REG_LINK0_MSI_ADDR_SIZE_MASK GENMASK(15, 0) +#define REG_LINK1_MSI_ADDR_SIZE_MASK GENMASK(31, 16) + +struct sg2042_pcie { + struct cdns_pcie *cdns_pcie; + + struct regmap *syscon; + + u32 port; + + struct irq_domain *msi_domain; + + int msi_irq; + + dma_addr_t msi_phys; + void *msi_virt; + + u32 num_applied_vecs; /* used to speed up ISR */ + + raw_spinlock_t msi_lock; + DECLARE_BITMAP(msi_irq_in_use, MAX_MSI_IRQS); +}; + +static void sg2042_pcie_msi_clear_status(struct sg2042_pcie *pcie) +{ + u32 status, clr_msi_in_bit; + + if (pcie->port == 1) + clr_msi_in_bit = BIT(REG_CLEAR_LINK1_BIT); + else + clr_msi_in_bit = BIT(REG_CLEAR_LINK0_BIT); + + regmap_read(pcie->syscon, REG_CLEAR, &status); + status |= clr_msi_in_bit; + regmap_write(pcie->syscon, REG_CLEAR, status); + + /* need write 0 to reset, hardware can not reset automatically */ + status &= ~clr_msi_in_bit; + regmap_write(pcie->syscon, REG_CLEAR, status); +} + +#ifdef CONFIG_SMP +static int sg2042_pcie_msi_irq_set_affinity(struct irq_data *d, + const struct cpumask *mask, + bool force) +{ + if (d->parent_data) + return irq_chip_set_affinity_parent(d, mask, force); + + return -EINVAL; +} +#endif /* CONFIG_SMP */ + +static void sg2042_pcie_msi_irq_compose_msi_msg(struct irq_data *d, + struct msi_msg *msg) +{ + struct sg2042_pcie *pcie = irq_data_get_irq_chip_data(d); + struct device *dev = pcie->cdns_pcie->dev; + + msg->address_lo = lower_32_bits(pcie->msi_phys) + BYTE_NUM_PER_MSI_VEC * d->hwirq; + msg->address_hi = upper_32_bits(pcie->msi_phys); + msg->data = 1; + + if (d->hwirq > pcie->num_applied_vecs) + pcie->num_applied_vecs = d->hwirq; + + dev_dbg(dev, "compose MSI msg hwirq[%ld] address_hi[%#x] address_lo[%#x]\n", + d->hwirq, msg->address_hi, msg->address_lo); +} + +static void sg2042_pcie_msi_irq_ack(struct irq_data *d) +{ + struct sg2042_pcie *pcie = irq_data_get_irq_chip_data(d); + + sg2042_pcie_msi_clear_status(pcie); +} + +static struct irq_chip sg2042_pcie_msi_bottom_chip = { + .name = "SG2042 PCIe PLIC-MSI translator", + .irq_ack = sg2042_pcie_msi_irq_ack, + .irq_compose_msi_msg = sg2042_pcie_msi_irq_compose_msi_msg, +#ifdef CONFIG_SMP + .irq_set_affinity = sg2042_pcie_msi_irq_set_affinity, +#endif +}; + +static int sg2042_pcie_irq_domain_alloc(struct irq_domain *domain, + unsigned int virq, unsigned int nr_irqs, + void *args) +{ + struct sg2042_pcie *pcie = domain->host_data; + unsigned long flags; + u32 i; + int bit; + + raw_spin_lock_irqsave(&pcie->msi_lock, flags); + + bit = bitmap_find_free_region(pcie->msi_irq_in_use, MSI_DEF_NUM_VECTORS, + order_base_2(nr_irqs)); + + raw_spin_unlock_irqrestore(&pcie->msi_lock, flags); + + if (bit < 0) + return -ENOSPC; + + for (i = 0; i < nr_irqs; i++) + irq_domain_set_info(domain, virq + i, bit + i, + &sg2042_pcie_msi_bottom_chip, + pcie, handle_edge_irq, + NULL, NULL); + + return 0; +} + +static void sg2042_pcie_irq_domain_free(struct irq_domain *domain, + unsigned int virq, unsigned int nr_irqs) +{ + struct irq_data *d = irq_domain_get_irq_data(domain, virq); + struct sg2042_pcie *pcie = irq_data_get_irq_chip_data(d); + unsigned long flags; + + raw_spin_lock_irqsave(&pcie->msi_lock, flags); + + bitmap_release_region(pcie->msi_irq_in_use, d->hwirq, + order_base_2(nr_irqs)); + + raw_spin_unlock_irqrestore(&pcie->msi_lock, flags); +} + +static const struct irq_domain_ops sg2042_pcie_msi_domain_ops = { + .alloc = sg2042_pcie_irq_domain_alloc, + .free = sg2042_pcie_irq_domain_free, +}; + +static int sg2042_pcie_init_msi_data(struct sg2042_pcie *pcie) +{ + struct device *dev = pcie->cdns_pcie->dev; + u32 value; + int ret; + + raw_spin_lock_init(&pcie->msi_lock); + + /* + * Though the PCIe controller can address >32-bit address space, to + * facilitate endpoints that support only 32-bit MSI target address, + * the mask is set to 32-bit to make sure that MSI target address is + * always a 32-bit address + */ + ret = dma_set_coherent_mask(dev, DMA_BIT_MASK(32)); + if (ret < 0) + return ret; + + pcie->msi_virt = dma_alloc_coherent(dev, BYTE_NUM_PER_MSI_VEC * MAX_MSI_IRQS, + &pcie->msi_phys, GFP_KERNEL); + if (!pcie->msi_virt) + return -ENOMEM; + + /* Program the MSI address and size */ + if (pcie->port == 1) { + regmap_write(pcie->syscon, REG_LINK1_MSI_ADDR_LOW, + lower_32_bits(pcie->msi_phys)); + regmap_write(pcie->syscon, REG_LINK1_MSI_ADDR_HIGH, + upper_32_bits(pcie->msi_phys)); + + regmap_read(pcie->syscon, REG_LINK1_MSI_ADDR_SIZE, &value); + value = (value & REG_LINK1_MSI_ADDR_SIZE_MASK) | MAX_MSI_IRQS; + regmap_write(pcie->syscon, REG_LINK1_MSI_ADDR_SIZE, value); + } else { + regmap_write(pcie->syscon, REG_LINK0_MSI_ADDR_LOW, + lower_32_bits(pcie->msi_phys)); + regmap_write(pcie->syscon, REG_LINK0_MSI_ADDR_HIGH, + upper_32_bits(pcie->msi_phys)); + + regmap_read(pcie->syscon, REG_LINK0_MSI_ADDR_SIZE, &value); + value = (value & REG_LINK0_MSI_ADDR_SIZE_MASK) | (MAX_MSI_IRQS << 16); + regmap_write(pcie->syscon, REG_LINK0_MSI_ADDR_SIZE, value); + } + + return 0; +} + +static irqreturn_t sg2042_pcie_msi_handle_irq(struct sg2042_pcie *pcie) +{ + u32 i, pos; + unsigned long val; + u32 status, num_vectors; + irqreturn_t ret = IRQ_NONE; + + num_vectors = pcie->num_applied_vecs; + for (i = 0; i <= num_vectors; i++) { + status = readl((void *)(pcie->msi_virt + i * BYTE_NUM_PER_MSI_VEC)); + if (!status) + continue; + + ret = IRQ_HANDLED; + val = status; + pos = 0; + while ((pos = find_next_bit(&val, MAX_MSI_IRQS_PER_CTRL, + pos)) != MAX_MSI_IRQS_PER_CTRL) { + generic_handle_domain_irq(pcie->msi_domain, + (i * MAX_MSI_IRQS_PER_CTRL) + + pos); + pos++; + } + writel(0, ((void *)(pcie->msi_virt) + i * BYTE_NUM_PER_MSI_VEC)); + } + return ret; +} + +static void sg2042_pcie_msi_chained_isr(struct irq_desc *desc) +{ + struct irq_chip *chip = irq_desc_get_chip(desc); + u32 status, st_msi_in_bit; + struct sg2042_pcie *pcie; + + chained_irq_enter(chip, desc); + + pcie = irq_desc_get_handler_data(desc); + if (pcie->port == 1) + st_msi_in_bit = REG_STATUS_LINK1_BIT; + else + st_msi_in_bit = REG_STATUS_LINK0_BIT; + + regmap_read(pcie->syscon, REG_STATUS, &status); + if ((status >> st_msi_in_bit) & 0x1) { + sg2042_pcie_msi_clear_status(pcie); + + sg2042_pcie_msi_handle_irq(pcie); + } + + chained_irq_exit(chip, desc); +} + +#define SG2042_PCIE_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \ + MSI_FLAG_USE_DEF_CHIP_OPS) + +#define SG2042_PCIE_MSI_FLAGS_SUPPORTED MSI_GENERIC_FLAGS_MASK + +static struct msi_parent_ops sg2042_pcie_msi_parent_ops = { + .required_flags = SG2042_PCIE_MSI_FLAGS_REQUIRED, + .supported_flags = SG2042_PCIE_MSI_FLAGS_SUPPORTED, + .bus_select_mask = MATCH_PCI_MSI, + .bus_select_token = DOMAIN_BUS_NEXUS, + .prefix = "SG2042-", + .init_dev_msi_info = msi_lib_init_dev_msi_info, +}; + +static int sg2042_pcie_setup_msi(struct sg2042_pcie *pcie, struct device_node *msi_node) +{ + struct device *dev = pcie->cdns_pcie->dev; + struct fwnode_handle *fwnode = of_node_to_fwnode(dev->of_node); + struct irq_domain *parent_domain; + int ret = 0; + + if (!of_property_read_bool(msi_node, "msi-controller")) + return -ENODEV; + + ret = of_irq_get_byname(msi_node, "msi"); + if (ret <= 0) { + dev_err(dev, "%pOF: failed to get MSI irq\n", msi_node); + return ret; + } + pcie->msi_irq = ret; + + irq_set_chained_handler_and_data(pcie->msi_irq, + sg2042_pcie_msi_chained_isr, pcie); + + parent_domain = irq_domain_create_linear(fwnode, MSI_DEF_NUM_VECTORS, + &sg2042_pcie_msi_domain_ops, pcie); + if (!parent_domain) { + dev_err(dev, "%pfw: Failed to create IRQ domain\n", fwnode); + return -ENOMEM; + } + irq_domain_update_bus_token(parent_domain, DOMAIN_BUS_NEXUS); + + parent_domain->flags |= IRQ_DOMAIN_FLAG_MSI_PARENT; + parent_domain->msi_parent_ops = &sg2042_pcie_msi_parent_ops; + + pcie->msi_domain = parent_domain; + + ret = sg2042_pcie_init_msi_data(pcie); + if (ret) { + dev_err(dev, "Failed to initialize MSI data!\n"); + return ret; + } + + return 0; +} + +static void sg2042_pcie_free_msi(struct sg2042_pcie *pcie) +{ + struct device *dev = pcie->cdns_pcie->dev; + + if (pcie->msi_irq) + irq_set_chained_handler_and_data(pcie->msi_irq, NULL, NULL); + + if (pcie->msi_virt) + dma_free_coherent(dev, BYTE_NUM_PER_MSI_VEC * MAX_MSI_IRQS, + pcie->msi_virt, pcie->msi_phys); +} + +/* + * SG2042 only support 4-byte aligned access, so for the rootbus (i.e. to read + * the PCIe controller itself, read32 is required. For non-rootbus (i.e. to read + * the PCIe peripheral registers, supports 1/2/4 byte aligned access, so + * directly use read should be fine. + * + * The same is true for write. + */ +static int sg2042_pcie_config_read(struct pci_bus *bus, unsigned int devfn, + int where, int size, u32 *value) +{ + if (pci_is_root_bus(bus)) + return pci_generic_config_read32(bus, devfn, where, size, + value); + + return pci_generic_config_read(bus, devfn, where, size, value); +} + +static int sg2042_pcie_config_write(struct pci_bus *bus, unsigned int devfn, + int where, int size, u32 value) +{ + if (pci_is_root_bus(bus)) + return pci_generic_config_write32(bus, devfn, where, size, + value); + + return pci_generic_config_write(bus, devfn, where, size, value); +} + +static struct pci_ops sg2042_pcie_host_ops = { + .map_bus = cdns_pci_map_bus, + .read = sg2042_pcie_config_read, + .write = sg2042_pcie_config_write, +}; + +/* Dummy ops which will be assigned to cdns_pcie.ops, which must be !NULL. */ +static const struct cdns_pcie_ops sg2042_cdns_pcie_ops = {}; + +static int sg2042_pcie_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct device_node *np = dev->of_node; + struct pci_host_bridge *bridge; + struct device_node *np_syscon; + struct device_node *msi_node; + struct cdns_pcie *cdns_pcie; + struct sg2042_pcie *pcie; + struct cdns_pcie_rc *rc; + struct regmap *syscon; + int ret; + + if (!IS_ENABLED(CONFIG_PCIE_CADENCE_HOST)) + return -ENODEV; + + pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); + if (!pcie) + return -ENOMEM; + + bridge = devm_pci_alloc_host_bridge(dev, sizeof(*rc)); + if (!bridge) { + dev_err(dev, "Failed to alloc host bridge!\n"); + return -ENOMEM; + } + + bridge->ops = &sg2042_pcie_host_ops; + + rc = pci_host_bridge_priv(bridge); + cdns_pcie = &rc->pcie; + cdns_pcie->dev = dev; + cdns_pcie->ops = &sg2042_cdns_pcie_ops; + pcie->cdns_pcie = cdns_pcie; + + np_syscon = of_parse_phandle(np, "sophgo,syscon-pcie-ctrl", 0); + if (!np_syscon) { + dev_err(dev, "Failed to get syscon node\n"); + return -ENOMEM; + } + syscon = syscon_node_to_regmap(np_syscon); + if (IS_ERR(syscon)) { + dev_err(dev, "Failed to get regmap for syscon\n"); + return -ENOMEM; + } + pcie->syscon = syscon; + + if (of_property_read_u32(np, "sophgo,pcie-port", &pcie->port)) { + dev_err(dev, "Unable to parse sophgo,pcie-port\n"); + return -EINVAL; + } + + platform_set_drvdata(pdev, pcie); + + pm_runtime_enable(dev); + + ret = pm_runtime_get_sync(dev); + if (ret < 0) { + dev_err(dev, "pm_runtime_get_sync failed\n"); + goto err_get_sync; + } + + msi_node = of_parse_phandle(dev->of_node, "msi-parent", 0); + if (!msi_node) { + dev_err(dev, "Failed to get msi-parent!\n"); + return -1; + } + + if (of_device_is_compatible(msi_node, "sophgo,sg2042-pcie-msi")) { + ret = sg2042_pcie_setup_msi(pcie, msi_node); + if (ret < 0) + goto err_setup_msi; + } + + ret = cdns_pcie_init_phy(dev, cdns_pcie); + if (ret) { + dev_err(dev, "Failed to init phy!\n"); + goto err_setup_msi; + } + + ret = cdns_pcie_host_setup(rc); + if (ret < 0) { + dev_err(dev, "Failed to setup host!\n"); + goto err_host_setup; + } + + return 0; + +err_host_setup: + cdns_pcie_disable_phy(cdns_pcie); + +err_setup_msi: + sg2042_pcie_free_msi(pcie); + +err_get_sync: + pm_runtime_put(dev); + pm_runtime_disable(dev); + + return ret; +} + +static void sg2042_pcie_shutdown(struct platform_device *pdev) +{ + struct sg2042_pcie *pcie = platform_get_drvdata(pdev); + struct cdns_pcie *cdns_pcie = pcie->cdns_pcie; + struct device *dev = &pdev->dev; + + sg2042_pcie_free_msi(pcie); + + cdns_pcie_disable_phy(cdns_pcie); + + pm_runtime_put(dev); + pm_runtime_disable(dev); +} + +static const struct of_device_id sg2042_pcie_of_match[] = { + { .compatible = "sophgo,sg2042-pcie-host" }, + {}, +}; + +static struct platform_driver sg2042_pcie_driver = { + .driver = { + .name = "sg2042-pcie", + .of_match_table = sg2042_pcie_of_match, + .pm = &cdns_pcie_pm_ops, + }, + .probe = sg2042_pcie_probe, + .shutdown = sg2042_pcie_shutdown, +}; +builtin_platform_driver(sg2042_pcie_driver); From patchwork Mon Dec 9 07:20:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Wang X-Patchwork-Id: 13898987 Received: from mail-ot1-f48.google.com (mail-ot1-f48.google.com [209.85.210.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 CEBD621481E; Mon, 9 Dec 2024 07:20:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733728825; cv=none; b=FqvZvlF42NkS+Q1A0qgazZzkDZcPTkJ0rifHVm8+WhX/RcsHuKW/4ti3/6L0h4h2pV6t6Pl5M/WjZwviRMdS5+Rr6kXNYxyunXjrnp/GqoMjxrcuO8uvUZINqC7GsK2mLBwDuUbzuS3x2Etzuy9Bp1ftzABYqIs6mT3ISYpL7rM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733728825; c=relaxed/simple; bh=Fr9jJDyazkAxm1yCzozauu1TWkL0T9n7MPOs6LoXAUk=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lX48RZvmVfL/GXeMZcFP0oGwX778r6QmAeFSdvr283V+aYcN5DDq9cjsDTx9M0qdR8kqxRwkdgAs/t/0Cp6Ln8zB8FcdrkVFzQn7Lm2cQQDNAb/0TO4bDcfuCRsgH1G9W3OaPK6ggGswFi9jUYIogXgSbCNBoX8kMCemxbDipGM= 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=Xxb4sbSl; arc=none smtp.client-ip=209.85.210.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="Xxb4sbSl" Received: by mail-ot1-f48.google.com with SMTP id 46e09a7af769-71deb8054e1so419432a34.3; Sun, 08 Dec 2024 23:20:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733728823; x=1734333623; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=w6YQ0GzT2dh6d3+cDp1ybb0EefAGpyFstieUs8RwCKE=; b=Xxb4sbSlFRtNkZwxhRFlw4paqiEgYZIWU0E0nOmJsSSg97AfCyAfDgq3gHkp5KIe64 4oi3hiW7g+ZcDzVGis2NgbzMKMmkxsc1IfTeAfO876m6IhuazyugRsNXuch4xZH3VdB+ KFbpHePoQbznCdfPhYsrvWnKhzK5yWy+iH0YTu62b5CcZyXqz20CmjKhprQfux2pCfFv O1a2bUiquLQ6agGd5PTlG3HSB/CNWVNfVCmiHPzUB0mpOJinWIAXa4+RkhnKgEDCvKws 7sQ2bhYf0iBRYkNZ9y3I30kY7f14AgxiqaTiNBw4PI+Sl6cn4nadAb96fW7PKRe54mM8 Q4Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733728823; x=1734333623; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=w6YQ0GzT2dh6d3+cDp1ybb0EefAGpyFstieUs8RwCKE=; b=WsZQIGGm08PKkFNEMv1sPc09KaZVxJ8w+znfkvQi+yH2MgFX423CGwyHRIado+ktAp KJCm1HW+iff/AE35ikQjtycgo9wIDpxUsp+BjR0yg3csY58oMTtsCW0S7CG9TJevCQBi tOe6g3xSFD/QUJoI7TVzIMSkHBIUdqzKCWwlvcUIFKWmdpLlsZp5MPPRT+N76t8d/NBv chpHiXEmq8Oi8Wwx967E9mM/EiAS7UkCcDxYdXD8VKqsxSYhtfLSfLDN5OzFOAF0kuXs /2FbXU5TdToA34+9Ct+UNKkCyA2wlz9bvGBMa4HQcDf5NpNZxGZ55DA7P7cCgiSrz9f2 X61A== X-Forwarded-Encrypted: i=1; AJvYcCVpcA+zbmp+VzRf1yBsttbmYuNp9N2S3IGPhr6f9DvE0p/nBUR/YkIvE24fZ0AipOCo2ZWwrEXEWEYvJcnL@vger.kernel.org, AJvYcCWzO95QHsqdyRALpE6eW916r2PhE+w0CKCXF5Hf22/G9e/uiUv1nEMI6M1xfeHDfzsa05fnHxx1IKDL@vger.kernel.org, AJvYcCX3eg97wB7bfCF4AtXeUiCLz27cyhODgroFguQJdgZ7Mf4XxQXUJjX2Ao4Ng/c472KJ+sQ1DETB3l5e@vger.kernel.org X-Gm-Message-State: AOJu0YxcOEQ5B1eLY845iszLE9qB7amEPffXOT9X541lyPPnIekUXwAw fNoU0IuDvSNq1xL3rsTH39kCWHlOAYU4ejpjH5u+omARJs/kFqF5 X-Gm-Gg: ASbGncvigNgOup5CQ/irxvbXDX2FL9e5GnhajVdNlsZlszosaQYHY0tdp7/2E5IIUur N/lgh6iRN/jSnrYBbwAqOZ2hvYenDcw3sjXu1dEBYP9HDed5FrygCmazKN9KnXg8tYMv7+KG7yR H1u6rvxIdxjFNxm1ol/TqC9PORf/BfJycFC/wa+vMqDx6NLN4AnDIKYCpMBrxQRG9xuwlidkmr/ a1DgTtjk6ztGfIiP1zkK1ok/UdZk2KkvuZNZy4sA3e2MsGKHhTMCn/SfcmJ X-Google-Smtp-Source: AGHT+IHqaEN/srMd0hN83wcfS1YvS4PEsil1moDw9xoC0lsg+kGLgxp++DQy1DAhEkfiqMtdRGr+qQ== X-Received: by 2002:a05:6830:610d:b0:71d:5084:3223 with SMTP id 46e09a7af769-71dcf4e5f65mr7035025a34.15.1733728822893; Sun, 08 Dec 2024 23:20:22 -0800 (PST) Received: from localhost.localdomain ([122.8.183.87]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-71dc747d31dsm1973452a34.53.2024.12.08.23.20.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Dec 2024 23:20:21 -0800 (PST) From: Chen Wang To: kw@linux.com, u.kleine-koenig@baylibre.com, aou@eecs.berkeley.edu, arnd@arndb.de, bhelgaas@google.com, unicorn_wang@outlook.com, conor+dt@kernel.org, guoren@kernel.org, inochiama@outlook.com, krzk+dt@kernel.org, lee@kernel.org, lpieralisi@kernel.org, manivannan.sadhasivam@linaro.org, palmer@dabbelt.com, paul.walmsley@sifive.com, pbrobinson@gmail.com, robh@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-riscv@lists.infradead.org, chao.wei@sophgo.com, xiaoguang.xing@sophgo.com, fengchun.li@sophgo.com, helgaas@kernel.org Subject: [PATCH v2 3/5] dt-bindings: mfd: syscon: Add sg2042 pcie ctrl compatible Date: Mon, 9 Dec 2024 15:20:14 +0800 Message-Id: <29ceb01afb1838755b4b64ae891f51a5b1bb7716.1733726572.git.unicorn_wang@outlook.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Chen Wang Document SOPHGO SG2042 compatible for PCIe control registers. These registers are shared by pcie controller nodes. Signed-off-by: Chen Wang Acked-by: Rob Herring (Arm) --- Documentation/devicetree/bindings/mfd/syscon.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/mfd/syscon.yaml b/Documentation/devicetree/bindings/mfd/syscon.yaml index b414de4fa779..afd89aa0ae8b 100644 --- a/Documentation/devicetree/bindings/mfd/syscon.yaml +++ b/Documentation/devicetree/bindings/mfd/syscon.yaml @@ -107,6 +107,7 @@ select: - rockchip,rk3576-qos - rockchip,rk3588-qos - rockchip,rv1126-qos + - sophgo,sg2042-pcie-ctrl - st,spear1340-misc - stericsson,nomadik-pmu - starfive,jh7100-sysmain @@ -205,6 +206,7 @@ properties: - rockchip,rk3576-qos - rockchip,rk3588-qos - rockchip,rv1126-qos + - sophgo,sg2042-pcie-ctrl - st,spear1340-misc - stericsson,nomadik-pmu - starfive,jh7100-sysmain From patchwork Mon Dec 9 07:20:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Wang X-Patchwork-Id: 13898988 Received: from mail-ot1-f41.google.com (mail-ot1-f41.google.com [209.85.210.41]) (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 5D99E214A84; Mon, 9 Dec 2024 07:20:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733728842; cv=none; b=nMqyunpSUJhGaRJj4ty9RiUk4DURWdm2Y1gVqd6ICS2+qZ9BoDY16nIcM8yQ3JwoBP40GxIbKyCrvCJeXGxR+yTnDzOHK+8ejFPvOlOz+tTywwFy8s0GS4uIVBi3lORvU3EQvTtwCiUTWSyjyBcDb9C+APeSOSeUwDiE7bq+6Rw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733728842; c=relaxed/simple; bh=QPprxf4AkFBK+fScYVC+h19VozXWB6kVUkMW1Kc+8vM=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YVS5VB8tjokVt3+6zNXcMG1KzWTJC6o0Of6WcLgfceu5Ed6/3hhWlggXKeqEWEPXZyhebPCZXv9GbHuOq4XZ2WCkFRXwuC73wGlYgi3RcNWD9P56r2vmQxTSepxlyRNemXJ8OqPHaRiGbDQ/eV6QrhoqxKoPA+JlEk6MsW1HRTM= 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=J1S5aiDy; arc=none smtp.client-ip=209.85.210.41 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="J1S5aiDy" Received: by mail-ot1-f41.google.com with SMTP id 46e09a7af769-71df00181b2so430910a34.0; Sun, 08 Dec 2024 23:20:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733728839; x=1734333639; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=hbDh/g3jGuzLNE1F/UbDJJl1YM6gN84aixwHJdNbJcM=; b=J1S5aiDy6sI3F0R5DXSGIq9xS3yP9EwHzJJcE5yvZ1+lmtKxXy0JYdQ6iQ3FQkhKk+ 01smSp8OkrM8s6aK0EMwU2R130bQ9PGkXa7Bm4B/uHDUBGL1z8Awjw6nA8AwTx5h/Tdo amZrsP07sGQFC6ozdubiOeQNUBRPyEl19djrz3G3L7nYRq+BKvpMDkSDWMNrS3/FSV3/ aLCFo+0n8CuCfn6xZG7HIKWfBRcbVAXyJxfvdD1Qci0BogXdfRmBDDB6CkAxgXtV+auM 914Ltj4B9jDnvfrpKXi/XbbQmzxV47wQpGEim+CcUogSGTZmDi9mfMAdsbLebSA7hYdD KTuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733728839; x=1734333639; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hbDh/g3jGuzLNE1F/UbDJJl1YM6gN84aixwHJdNbJcM=; b=sHEhj6t2EcCJQQYFHWq1wY3ZT73hRyeURvb4hEt3X/kTR6gL59fljUVnk9tt9QZewA 6KZy5RFc8aIY8mNIfbSgcaj4fAjFsvA6Y2FDoMhkqgtLuxC5WhAmbHO1WE8MFayY9rqH Qh2DZ4SRLaahi/3bxQHzQojwnZDe/G9U07Cj0nWWSdvzn6uIp4kByGCMVpcWBOkk9V/5 rGEqS/h59s2GfBn7YECBIOwqMyUQkYbLhaUb3fkxlIvU2QWZaHDQmLihq73iL8/8CBOD LbwjdFtog8M/JKDHyNsFfz/hAz2+AdhEJlg1K5/do/0Uk7Gz/n2FNb7wVr2Bv+Wg7Dpd rEAA== X-Forwarded-Encrypted: i=1; AJvYcCUPk0i8Qh76eTqRvggIi+uUzj9S/Bx8LQoyHVQpFmsRHzoogldxBw0rRCQBNFFNhEGh56ALrsNvhOgggbIY@vger.kernel.org, AJvYcCXTCeGxam1Q8LrpvHeQ7+pN/5kkxj1JQIkipAvzxflQbipr+y9TKIXD/wGywfr/8ITd9sxeLd3tBh3W@vger.kernel.org, AJvYcCXueTRXKFLbfVd7oJTCiCc3TL1E3KrSM+nbmaYNr5yeMBwyp2V9PRAinLr5NNOwbpEk9IMd9LKtekRM@vger.kernel.org X-Gm-Message-State: AOJu0Yx+bLahN917tWxn5jk4FOr7JifqY4S1ssvL+bvzwMgJP6bsoHph wXogIi8BSMN+vm6hOmzP1FbrsSh03MDUwrrAMUZjTt/qo1+CaHrl X-Gm-Gg: ASbGncsYP9Gzm0kLy/zEd383gkaG+46mPe4j5CVErXRJXZtU29hmSHbWDTZLOwGCZgY eggM+nmYn7WTZ6ezdeeerDRjKRSgJlFTgV22btJjShTbnvEJCAlw2BuAnqzh3Fn3PBhYGUw4dH1 bo13MTR6XrrF77vHaf+ktEL+eWZE+eDIIhafTZL7azU8LrN6KxhjpUUntGHY9gnSLerap1J5kZT FXVLLxcJszPJFhCxQWx3bYVCn8p+MReV0LsPBltPEGRCThs1LsO68OcFilZ X-Google-Smtp-Source: AGHT+IG5zrGT2pA4Mo08JycALnQE/jgwjzKHfeIfoQjjJ7auIuS4u+TvVuuWZ5bJxvnL2bTWFYRjOg== X-Received: by 2002:a05:6830:b83:b0:71d:3e4d:becf with SMTP id 46e09a7af769-71dcf567efcmr10394977a34.27.1733728839444; Sun, 08 Dec 2024 23:20:39 -0800 (PST) Received: from localhost.localdomain ([122.8.183.87]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-71dfd03aa13sm69807a34.8.2024.12.08.23.20.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Dec 2024 23:20:38 -0800 (PST) From: Chen Wang To: kw@linux.com, u.kleine-koenig@baylibre.com, aou@eecs.berkeley.edu, arnd@arndb.de, bhelgaas@google.com, unicorn_wang@outlook.com, conor+dt@kernel.org, guoren@kernel.org, inochiama@outlook.com, krzk+dt@kernel.org, lee@kernel.org, lpieralisi@kernel.org, manivannan.sadhasivam@linaro.org, palmer@dabbelt.com, paul.walmsley@sifive.com, pbrobinson@gmail.com, robh@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-riscv@lists.infradead.org, chao.wei@sophgo.com, xiaoguang.xing@sophgo.com, fengchun.li@sophgo.com, helgaas@kernel.org Subject: [PATCH v2 4/5] riscv: sophgo: dts: add pcie controllers for SG2042 Date: Mon, 9 Dec 2024 15:20:30 +0800 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Chen Wang Add PCIe controller nodes in DTS for Sophgo SG2042. Default they are disabled. Signed-off-by: Chen Wang --- arch/riscv/boot/dts/sophgo/sg2042.dtsi | 89 ++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/arch/riscv/boot/dts/sophgo/sg2042.dtsi b/arch/riscv/boot/dts/sophgo/sg2042.dtsi index e62ac51ac55a..bbb7cabab9de 100644 --- a/arch/riscv/boot/dts/sophgo/sg2042.dtsi +++ b/arch/riscv/boot/dts/sophgo/sg2042.dtsi @@ -195,6 +195,95 @@ clkgen: clock-controller@7030012000 { #clock-cells = <1>; }; + pcie_rc0: pcie@7060000000 { + compatible = "sophgo,sg2042-pcie-host"; + device_type = "pci"; + reg = <0x70 0x60000000 0x0 0x02000000>, + <0x40 0x00000000 0x0 0x00001000>; + reg-names = "reg", "cfg"; + linux,pci-domain = <0>; + #address-cells = <3>; + #size-cells = <2>; + ranges = <0x01000000 0x0 0xc0000000 0x40 0xc0000000 0x0 0x00400000>, + <0x42000000 0x0 0xd0000000 0x40 0xd0000000 0x0 0x10000000>, + <0x02000000 0x0 0xe0000000 0x40 0xe0000000 0x0 0x20000000>, + <0x43000000 0x42 0x00000000 0x42 0x00000000 0x2 0x00000000>, + <0x03000000 0x41 0x00000000 0x41 0x00000000 0x1 0x00000000>; + bus-range = <0x0 0x3f>; + vendor-id = <0x1f1c>; + device-id = <0x2042>; + cdns,no-bar-match-nbits = <48>; + sophgo,pcie-port = <0>; + sophgo,syscon-pcie-ctrl = <&cdns_pcie0_ctrl>; + msi-parent = <&msi>; + status = "disabled"; + }; + + cdns_pcie0_ctrl: syscon@7061800000 { + compatible = "sophgo,sg2042-pcie-ctrl", "syscon"; + reg = <0x70 0x61800000 0x0 0x800000>; + }; + + pcie_rc1: pcie@7062000000 { + compatible = "sophgo,sg2042-pcie-host"; + device_type = "pci"; + reg = <0x70 0x62000000 0x0 0x00800000>, + <0x48 0x00000000 0x0 0x00001000>; + reg-names = "reg", "cfg"; + linux,pci-domain = <1>; + #address-cells = <3>; + #size-cells = <2>; + ranges = <0x01000000 0x0 0xc0800000 0x48 0xc0800000 0x0 0x00400000>, + <0x42000000 0x0 0xd0000000 0x48 0xd0000000 0x0 0x10000000>, + <0x02000000 0x0 0xe0000000 0x48 0xe0000000 0x0 0x20000000>, + <0x03000000 0x49 0x00000000 0x49 0x00000000 0x1 0x00000000>, + <0x43000000 0x4a 0x00000000 0x4a 0x00000000 0x2 0x00000000>; + bus-range = <0x80 0xbf>; + vendor-id = <0x1f1c>; + device-id = <0x2042>; + cdns,no-bar-match-nbits = <48>; + sophgo,pcie-port = <0>; + sophgo,syscon-pcie-ctrl = <&cdns_pcie1_ctrl>; + msi-parent = <&msi_pcie>; + status = "disabled"; + msi_pcie: msi { + compatible = "sophgo,sg2042-pcie-msi"; + msi-controller; + interrupt-parent = <&intc>; + interrupts = <123 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "msi"; + }; + }; + + pcie_rc2: pcie@7062800000 { + compatible = "sophgo,sg2042-pcie-host"; + device_type = "pci"; + reg = <0x70 0x62800000 0x0 0x00800000>, + <0x4c 0x00000000 0x0 0x00001000>; + reg-names = "reg", "cfg"; + linux,pci-domain = <2>; + #address-cells = <3>; + #size-cells = <2>; + ranges = <0x01000000 0x0 0xc0c00000 0x4c 0xc0c00000 0x0 0x00400000>, + <0x42000000 0x0 0xf8000000 0x4c 0xf8000000 0x0 0x04000000>, + <0x02000000 0x0 0xfc000000 0x4c 0xfc000000 0x0 0x04000000>, + <0x43000000 0x4e 0x00000000 0x4e 0x00000000 0x2 0x00000000>, + <0x03000000 0x4d 0x00000000 0x4d 0x00000000 0x1 0x00000000>; + bus-range = <0xc0 0xff>; + vendor-id = <0x1f1c>; + device-id = <0x2042>; + cdns,no-bar-match-nbits = <48>; + sophgo,pcie-port = <1>; + sophgo,syscon-pcie-ctrl = <&cdns_pcie1_ctrl>; + msi-parent = <&msi>; + status = "disabled"; + }; + + cdns_pcie1_ctrl: syscon@7063800000 { + compatible = "sophgo,sg2042-pcie-ctrl", "syscon"; + reg = <0x70 0x63800000 0x0 0x800000>; + }; + clint_mswi: interrupt-controller@7094000000 { compatible = "sophgo,sg2042-aclint-mswi", "thead,c900-aclint-mswi"; reg = <0x00000070 0x94000000 0x00000000 0x00004000>; From patchwork Mon Dec 9 07:20:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Wang X-Patchwork-Id: 13898989 Received: from mail-oi1-f171.google.com (mail-oi1-f171.google.com [209.85.167.171]) (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 549AF214A93; Mon, 9 Dec 2024 07:20:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733728857; cv=none; b=K32FRaIeK/1lJ4f7aqQaYlz2QziGQ6EbYVwaZVuVi3xRAUAEdrVK855wSDC2op8o+MS5SOkJmfOPOc+q9gJfwR1xfhdHyMPeQJ+YTf0eYysUm2NeDLZr9cQz98sRtOLoDyQ1VqpCM1l5a+ms7EOdDmYAYMwxfrA/LwMamtQYdzE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733728857; c=relaxed/simple; bh=3Y0qnShoAPTndhTD1AZiRjsbhyrdHNiZJdUViFf5U9Q=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rQhFzKkVxuY83n9x152UugDkefLeZYdoX5z8wcdttyIqtOP9FU+RwlwJ583YV6C9afyuf9rAErdsLPEF9LCOM9wlbUviq5L9cuNIGyE8OdhA8Dy1tB4qJNbPIujd2VlvYLaoLa2yo7hDvswwPm+8xobNi0MjC8Uoie4+qVCD4qs= 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=BM15vfY/; arc=none smtp.client-ip=209.85.167.171 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="BM15vfY/" Received: by mail-oi1-f171.google.com with SMTP id 5614622812f47-3eb34620af9so702112b6e.1; Sun, 08 Dec 2024 23:20:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733728855; x=1734333655; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Sywd5ibf/76z5+rkZ7ijeWmGFF2MBuEBBfOcYOD/r6A=; b=BM15vfY/ju/uZQdRFdsYiT1LQ+jsCVE/3XltguyptBMqCaEQ0aeday8qhf8utQJq6L R5gF6mFpB9IjQjbkYCALNt4t6Axd6fKE0dWyFBW8KJqU4cenhUEhv8vJl8Ui5McioyEy DlIXIUKuMY6d1963QSWdCC+r0CTh3L9Fhy180vVIZDFBhFrqW5IKHWl7/yDmd9hd/Nta omSujZqqvlhaDjB2Vi7ca+/q9X4wuYh2ChMr5wzXMH8OhXBwaJHOVyv9SyqosYF5HV3c OyffMOfRgKRYLKJNAEG6sl/QSka0+QH4MDtb2qDbHw2pkz6qKdSSRU4CIYJa2H2Joz/E jjHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733728855; x=1734333655; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Sywd5ibf/76z5+rkZ7ijeWmGFF2MBuEBBfOcYOD/r6A=; b=goZ4qNg/jhwR0p83TpAo+jnHnW4lbkBcDuNlqzgR/mS9O9oQ69M4OGTAjj5naUVBRj qrB5vhCHhzzv5DA07wNJJ4CTu+yaSivIWMHdHpb3goaY9womdZmD4CRguoyIKV7+2Ivt 50pBOfch//xkqdbvHRG4Gt6om5Ww8PPN6wSBB1v0KrzoHwpWWuNcH0M3jm+g7c0Hr+vu 8qHP/kkSbrnyx+5gB0MipsI12loAT0VrASyHoSIS/nyKipITacNQ1zdrspKFr4NAbq+W 3qDvfE8+pZ1cYda0V3NL46y82Xc+JiWPitKRdCg/GYTl6fborIepVfEEimMGF2DVMNRd yKXw== X-Forwarded-Encrypted: i=1; AJvYcCVyJk/GcxtXapAMY/E7mm4VlValwivC8QhRKbLS5nK7XzBHLq/qASFXecnsqC8J39FqSOaeSt6WEJbn@vger.kernel.org, AJvYcCWNdvioCQ3WT+l/FswWG5frvPQaVyJEt/5LESnyIbwBPMfBgyi8QbA1Q0td3RTeuekviakIKfkKDF+/MCUv@vger.kernel.org, AJvYcCWSfjQxP1662gDnp04+Manhm/zW0nL9toMMQmwCdNn8BFw1LmkuPkaPxDoG6qGCuyTDFtOlFi3ftbdI@vger.kernel.org X-Gm-Message-State: AOJu0YwZqmP9uimLIg2aqIo0LEOOrx8HUZePjMyTqcl3Ns4P6lmvSAXH ZGKE9XoLaS4IAwWv7CJmNHVqkt/IHlfeBnlbY5VAFxxgkKoE7ubi X-Gm-Gg: ASbGncuZLdnvr8OeZtH2MUOInfv8glbp9jb1Ga30ddEJHW5FCjvblVDhAOL9sxL6XtA fTZe7bSLf18p/DqU+7aRYpHJ/JutOnluK+nTcCz0Ly+aAFj0GcBMpP0RMlcaEdpO5XVzPxpfEL+ yAISC9NZlq8RhgkOexiF4C50JZnkC6u21Gip5gzVF4saMhyuB+Mi803oABsTTCNKsukCYl/mMAM ejlc/aV48MruIC0uck3TXDsy9gT6EbgDrvt/qN7v39YY86af+nWq/kukW1x X-Google-Smtp-Source: AGHT+IHWdeSWThVY+F+74ZdnjYKyllCPH28XhzCUMebKX0SZBBFPPV2lGMTSNickSlZKwyOtGT7n0A== X-Received: by 2002:a05:6808:2384:b0:3ea:5705:2a2f with SMTP id 5614622812f47-3eb19e5d650mr7560012b6e.43.1733728855352; Sun, 08 Dec 2024 23:20:55 -0800 (PST) Received: from localhost.localdomain ([122.8.183.87]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-5f2c472a028sm62252eaf.33.2024.12.08.23.20.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Dec 2024 23:20:54 -0800 (PST) From: Chen Wang To: kw@linux.com, u.kleine-koenig@baylibre.com, aou@eecs.berkeley.edu, arnd@arndb.de, bhelgaas@google.com, unicorn_wang@outlook.com, conor+dt@kernel.org, guoren@kernel.org, inochiama@outlook.com, krzk+dt@kernel.org, lee@kernel.org, lpieralisi@kernel.org, manivannan.sadhasivam@linaro.org, palmer@dabbelt.com, paul.walmsley@sifive.com, pbrobinson@gmail.com, robh@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-riscv@lists.infradead.org, chao.wei@sophgo.com, xiaoguang.xing@sophgo.com, fengchun.li@sophgo.com, helgaas@kernel.org Subject: [PATCH v2 5/5] riscv: sophgo: dts: enable pcie for PioneerBox Date: Mon, 9 Dec 2024 15:20:46 +0800 Message-Id: <5887f31f8f8080e833d799bb4fae2c52d6739d76.1733726572.git.unicorn_wang@outlook.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Chen Wang Enable pcie controllers for PioneerBox, which uses SG2042 SoC. Signed-off-by: Chen Wang --- arch/riscv/boot/dts/sophgo/sg2042-milkv-pioneer.dts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/riscv/boot/dts/sophgo/sg2042-milkv-pioneer.dts b/arch/riscv/boot/dts/sophgo/sg2042-milkv-pioneer.dts index be596d01ff8d..e63445cc7d18 100644 --- a/arch/riscv/boot/dts/sophgo/sg2042-milkv-pioneer.dts +++ b/arch/riscv/boot/dts/sophgo/sg2042-milkv-pioneer.dts @@ -60,6 +60,18 @@ mcu: syscon@17 { }; }; +&pcie_rc0 { + status = "okay"; +}; + +&pcie_rc1 { + status = "okay"; +}; + +&pcie_rc2 { + status = "okay"; +}; + &sd { bus-width = <4>; no-sdio;