linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [v1,0/2] PCI: mediatek: Add support for MT7629
@ 2019-01-21 11:11 Jianjun Wang
  2019-01-21 11:11 ` [v1,1/2] dt-bindings: PCI: " Jianjun Wang
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Jianjun Wang @ 2019-01-21 11:11 UTC (permalink / raw)
  To: bhelgaas, robh+dt, lorenzo.pieralisi, ryder.lee, mark.rutland
  Cc: matthias.bgg, linux-pci, linux-mediatek, devicetree,
	linux-kernel, linux-arm-kernel, honghui.zhang, youlin.pei,
	jianjun.wang

These series patches modify pcie-mediatek.c and dt-bindings compatible
string to support MT7629 PCIe host.

Jianjun Wang (2):
  dt-bindings: PCI: Add support for MT7629
  PCI: mediatek: Add controller support for MT7629

 .../devicetree/bindings/pci/mediatek-pcie.txt |  1 +
 drivers/pci/controller/pcie-mediatek.c        | 28 +++++++++++++++++++
 include/linux/pci_ids.h                       |  1 +
 3 files changed, 30 insertions(+)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [v1,1/2] dt-bindings: PCI: Add support for MT7629
  2019-01-21 11:11 [v1,0/2] PCI: mediatek: Add support for MT7629 Jianjun Wang
@ 2019-01-21 11:11 ` Jianjun Wang
  2019-01-21 11:11 ` [v1,2/2] PCI: mediatek: Add controller " Jianjun Wang
  2019-01-22  3:23 ` [v1,0/2] PCI: mediatek: Add " Ryder Lee
  2 siblings, 0 replies; 4+ messages in thread
From: Jianjun Wang @ 2019-01-21 11:11 UTC (permalink / raw)
  To: bhelgaas, robh+dt, lorenzo.pieralisi, ryder.lee, mark.rutland
  Cc: matthias.bgg, linux-pci, linux-mediatek, devicetree,
	linux-kernel, linux-arm-kernel, honghui.zhang, youlin.pei,
	jianjun.wang

MT7629 is an ARM platform Soc which has the same PCIe IP with MT7622.

Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Jianjun Wang <jianjun.wang@mediatek.com>
---
 Documentation/devicetree/bindings/pci/mediatek-pcie.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/pci/mediatek-pcie.txt b/Documentation/devicetree/bindings/pci/mediatek-pcie.txt
index 92437a366e5f..7468d666763a 100644
--- a/Documentation/devicetree/bindings/pci/mediatek-pcie.txt
+++ b/Documentation/devicetree/bindings/pci/mediatek-pcie.txt
@@ -6,6 +6,7 @@ Required properties:
 	"mediatek,mt2712-pcie"
 	"mediatek,mt7622-pcie"
 	"mediatek,mt7623-pcie"
+	"mediatek,mt7629-pcie"
 - device_type: Must be "pci"
 - reg: Base addresses and lengths of the PCIe subsys and root ports.
 - reg-names: Names of the above areas to use during resource lookup.
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [v1,2/2] PCI: mediatek: Add controller support for MT7629
  2019-01-21 11:11 [v1,0/2] PCI: mediatek: Add support for MT7629 Jianjun Wang
  2019-01-21 11:11 ` [v1,1/2] dt-bindings: PCI: " Jianjun Wang
@ 2019-01-21 11:11 ` Jianjun Wang
  2019-01-22  3:23 ` [v1,0/2] PCI: mediatek: Add " Ryder Lee
  2 siblings, 0 replies; 4+ messages in thread
From: Jianjun Wang @ 2019-01-21 11:11 UTC (permalink / raw)
  To: bhelgaas, robh+dt, lorenzo.pieralisi, ryder.lee, mark.rutland
  Cc: matthias.bgg, linux-pci, linux-mediatek, devicetree,
	linux-kernel, linux-arm-kernel, honghui.zhang, youlin.pei,
	jianjun.wang

MT7629 is an ARM platform SoC which has the same PCIe IP with MT7622.

The read value of BAR0 is 0xffff_ffff, its size will be calculated as 4GB
in arm64 but bogus alignment values at arm32, the bridge device and devices
behind this bridge will not be enabled. Fix its BAR0 resource size to
guarantee the PCIe devices will be enabled correctly.

The HW default value of its Device ID is invalid, fix its Device ID to
match the hardware implementation.

Signed-off-by: Jianjun Wang <jianjun.wang@mediatek.com>
---
 drivers/pci/controller/pcie-mediatek.c | 28 ++++++++++++++++++++++++++
 include/linux/pci_ids.h                |  1 +
 2 files changed, 29 insertions(+)

diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c
index 069363a02178..8d05df56158b 100644
--- a/drivers/pci/controller/pcie-mediatek.c
+++ b/drivers/pci/controller/pcie-mediatek.c
@@ -73,6 +73,7 @@
 #define PCIE_MSI_VECTOR		0x0c0
 
 #define PCIE_CONF_VEND_ID	0x100
+#define PCIE_CONF_DEVICE_ID	0x102
 #define PCIE_CONF_CLASS_ID	0x106
 
 #define PCIE_INT_MASK		0x420
@@ -135,12 +136,16 @@ struct mtk_pcie_port;
 /**
  * struct mtk_pcie_soc - differentiate between host generations
  * @need_fix_class_id: whether this host's class ID needed to be fixed or not
+ * @need_fix_device_id: whether this host's Device ID needed to be fixed or not
+ * @device_id: Device ID which this host need to be fixed
  * @ops: pointer to configuration access functions
  * @startup: pointer to controller setting functions
  * @setup_irq: pointer to initialize IRQ functions
  */
 struct mtk_pcie_soc {
 	bool need_fix_class_id;
+	bool need_fix_device_id;
+	unsigned int device_id;
 	struct pci_ops *ops;
 	int (*startup)(struct mtk_pcie_port *port);
 	int (*setup_irq)(struct mtk_pcie_port *port, struct device_node *node);
@@ -691,6 +696,9 @@ static int mtk_pcie_startup_port_v2(struct mtk_pcie_port *port)
 		writew(val, port->base + PCIE_CONF_CLASS_ID);
 	}
 
+	if (soc->need_fix_device_id)
+		writew(soc->device_id, port->base + PCIE_CONF_DEVICE_ID);
+
 	/* 100ms timeout value should be enough for Gen1/2 training */
 	err = readl_poll_timeout(port->base + PCIE_LINK_STATUS_V2, val,
 				 !!(val & PCIE_PORT_LINKUP_V2), 20,
@@ -1239,11 +1247,31 @@ static const struct mtk_pcie_soc mtk_pcie_soc_mt7622 = {
 	.setup_irq = mtk_pcie_setup_irq,
 };
 
+static const struct mtk_pcie_soc mtk_pcie_soc_mt7629 = {
+	.need_fix_class_id = true,
+	.need_fix_device_id = true,
+	.device_id = PCI_DEVICE_ID_MEDIATEK_7629,
+	.ops = &mtk_pcie_ops_v2,
+	.startup = mtk_pcie_startup_port_v2,
+	.setup_irq = mtk_pcie_setup_irq,
+};
+
+static void mtk_pcie_fixup_bar_size(struct pci_dev *dev)
+{
+	struct resource *dev_res = &dev->resource[0];
+
+	/* 32bit resource length will calculate size to 0, set it smaller */
+	dev_res->end -= 1;
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MEDIATEK, PCI_DEVICE_ID_MEDIATEK_7629,
+			 mtk_pcie_fixup_bar_size);
+
 static const struct of_device_id mtk_pcie_ids[] = {
 	{ .compatible = "mediatek,mt2701-pcie", .data = &mtk_pcie_soc_v1 },
 	{ .compatible = "mediatek,mt7623-pcie", .data = &mtk_pcie_soc_v1 },
 	{ .compatible = "mediatek,mt2712-pcie", .data = &mtk_pcie_soc_mt2712 },
 	{ .compatible = "mediatek,mt7622-pcie", .data = &mtk_pcie_soc_mt7622 },
+	{ .compatible = "mediatek,mt7629-pcie", .data = &mtk_pcie_soc_mt7629 },
 	{},
 };
 
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 5eaf39dbc388..a17c8482098d 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2129,6 +2129,7 @@
 #define PCI_VENDOR_ID_MYRICOM		0x14c1
 
 #define PCI_VENDOR_ID_MEDIATEK		0x14c3
+#define PCI_DEVICE_ID_MEDIATEK_7629	0x7629
 
 #define PCI_VENDOR_ID_TITAN		0x14D2
 #define PCI_DEVICE_ID_TITAN_010L	0x8001
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [v1,0/2] PCI: mediatek: Add support for MT7629
  2019-01-21 11:11 [v1,0/2] PCI: mediatek: Add support for MT7629 Jianjun Wang
  2019-01-21 11:11 ` [v1,1/2] dt-bindings: PCI: " Jianjun Wang
  2019-01-21 11:11 ` [v1,2/2] PCI: mediatek: Add controller " Jianjun Wang
@ 2019-01-22  3:23 ` Ryder Lee
  2 siblings, 0 replies; 4+ messages in thread
From: Ryder Lee @ 2019-01-22  3:23 UTC (permalink / raw)
  To: Jianjun Wang
  Cc: bhelgaas, robh+dt, lorenzo.pieralisi, mark.rutland, matthias.bgg,
	linux-pci, linux-mediatek, devicetree, linux-kernel,
	linux-arm-kernel, honghui.zhang, youlin.pei

On Mon, 2019-01-21 at 19:11 +0800, Jianjun Wang wrote:
> These series patches modify pcie-mediatek.c and dt-bindings compatible
> string to support MT7629 PCIe host.
> 
> Jianjun Wang (2):
>   dt-bindings: PCI: Add support for MT7629
>   PCI: mediatek: Add controller support for MT7629
> 
>  .../devicetree/bindings/pci/mediatek-pcie.txt |  1 +
>  drivers/pci/controller/pcie-mediatek.c        | 28 +++++++++++++++++++
>  include/linux/pci_ids.h                       |  1 +
>  3 files changed, 30 insertions(+)
> 

Acked-by: Ryder Lee <ryder.lee@mediatek.com>



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-01-22  3:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-21 11:11 [v1,0/2] PCI: mediatek: Add support for MT7629 Jianjun Wang
2019-01-21 11:11 ` [v1,1/2] dt-bindings: PCI: " Jianjun Wang
2019-01-21 11:11 ` [v1,2/2] PCI: mediatek: Add controller " Jianjun Wang
2019-01-22  3:23 ` [v1,0/2] PCI: mediatek: Add " Ryder Lee

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).