* [v2,0/2] PCI: mediatek: Add support for MT7629
@ 2019-06-28 7:34 Jianjun Wang
2019-06-28 7:34 ` [v2,1/2] dt-bindings: PCI: " Jianjun Wang
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Jianjun Wang @ 2019-06-28 7:34 UTC (permalink / raw)
To: Ryder Lee, Bjorn Helgaas, Rob Herring, Lorenzo Pieralisi
Cc: Mark Rutland, Matthias Brugger, linux-pci, linux-mediatek,
devicetree, linux-kernel, linux-arm-kernel, 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 | 18 ++++++++++++++++++
include/linux/pci_ids.h | 1 +
3 files changed, 20 insertions(+)
--
2.18.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [v2,1/2] dt-bindings: PCI: Add support for MT7629
2019-06-28 7:34 [v2,0/2] PCI: mediatek: Add support for MT7629 Jianjun Wang
@ 2019-06-28 7:34 ` Jianjun Wang
2019-06-28 7:34 ` [v2,2/2] PCI: mediatek: Add controller " Jianjun Wang
2019-08-07 10:57 ` [v2,0/2] PCI: mediatek: Add " Lorenzo Pieralisi
2 siblings, 0 replies; 9+ messages in thread
From: Jianjun Wang @ 2019-06-28 7:34 UTC (permalink / raw)
To: Ryder Lee, Bjorn Helgaas, Rob Herring, Lorenzo Pieralisi
Cc: Mark Rutland, Matthias Brugger, linux-pci, linux-mediatek,
devicetree, linux-kernel, linux-arm-kernel, 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>
Acked-by: Ryder Lee <ryder.lee@mediatek.com>
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.18.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [v2,2/2] PCI: mediatek: Add controller support for MT7629
2019-06-28 7:34 [v2,0/2] PCI: mediatek: Add support for MT7629 Jianjun Wang
2019-06-28 7:34 ` [v2,1/2] dt-bindings: PCI: " Jianjun Wang
@ 2019-06-28 7:34 ` Jianjun Wang
2019-07-29 7:38 ` Jianjun Wang
2019-08-07 10:57 ` [v2,0/2] PCI: mediatek: Add " Lorenzo Pieralisi
2 siblings, 1 reply; 9+ messages in thread
From: Jianjun Wang @ 2019-06-28 7:34 UTC (permalink / raw)
To: Ryder Lee, Bjorn Helgaas, Rob Herring, Lorenzo Pieralisi
Cc: Mark Rutland, Matthias Brugger, linux-pci, linux-mediatek,
devicetree, linux-kernel, linux-arm-kernel, youlin.pei,
jianjun.wang
MT7629 is an ARM platform SoC which has the same PCIe IP with MT7622.
The HW default value of its Device ID is invalid, fix its Device ID to
match the hardware implementation.
Acked-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Jianjun Wang <jianjun.wang@mediatek.com>
---
drivers/pci/controller/pcie-mediatek.c | 18 ++++++++++++++++++
include/linux/pci_ids.h | 1 +
2 files changed, 19 insertions(+)
diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c
index 80601e1b939e..e5e6740b635d 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
@@ -141,12 +142,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);
@@ -696,6 +701,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,
@@ -1216,11 +1224,21 @@ 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 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 70e86148cb1e..aa32962759b2 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2131,6 +2131,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.18.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [v2,2/2] PCI: mediatek: Add controller support for MT7629
2019-06-28 7:34 ` [v2,2/2] PCI: mediatek: Add controller " Jianjun Wang
@ 2019-07-29 7:38 ` Jianjun Wang
2019-07-29 15:33 ` Lorenzo Pieralisi
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Jianjun Wang @ 2019-07-29 7:38 UTC (permalink / raw)
To: Bjorn Helgaas, Lorenzo Pieralisi, Ryder Lee
Cc: Rob Herring, Mark Rutland, Matthias Brugger, linux-pci,
linux-mediatek, devicetree, linux-kernel, linux-arm-kernel,
youlin.pei, jianjun.wang
On Fri, 2019-06-28 at 15:34 +0800, Jianjun Wang wrote:
> MT7629 is an ARM platform SoC which has the same PCIe IP with MT7622.
>
> The HW default value of its Device ID is invalid, fix its Device ID to
> match the hardware implementation.
>
> Acked-by: Ryder Lee <ryder.lee@mediatek.com>
> Signed-off-by: Jianjun Wang <jianjun.wang@mediatek.com>
> ---
> drivers/pci/controller/pcie-mediatek.c | 18 ++++++++++++++++++
> include/linux/pci_ids.h | 1 +
> 2 files changed, 19 insertions(+)
>
> diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c
> index 80601e1b939e..e5e6740b635d 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
> @@ -141,12 +142,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);
> @@ -696,6 +701,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,
> @@ -1216,11 +1224,21 @@ 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 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 70e86148cb1e..aa32962759b2 100644
> --- a/include/linux/pci_ids.h
> +++ b/include/linux/pci_ids.h
> @@ -2131,6 +2131,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
Hi Bjorn & Lorenzo,
Is this patch ok or is there anything I need to fixed?
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v2,2/2] PCI: mediatek: Add controller support for MT7629
2019-07-29 7:38 ` Jianjun Wang
@ 2019-07-29 15:33 ` Lorenzo Pieralisi
2019-08-06 16:24 ` Lorenzo Pieralisi
2019-08-06 16:33 ` Andrew Murray
2 siblings, 0 replies; 9+ messages in thread
From: Lorenzo Pieralisi @ 2019-07-29 15:33 UTC (permalink / raw)
To: Jianjun Wang
Cc: Bjorn Helgaas, Ryder Lee, Rob Herring, Mark Rutland,
Matthias Brugger, linux-pci, linux-mediatek, devicetree,
linux-kernel, linux-arm-kernel, youlin.pei
On Mon, Jul 29, 2019 at 03:38:38PM +0800, Jianjun Wang wrote:
> On Fri, 2019-06-28 at 15:34 +0800, Jianjun Wang wrote:
> > MT7629 is an ARM platform SoC which has the same PCIe IP with MT7622.
> >
> > The HW default value of its Device ID is invalid, fix its Device ID to
> > match the hardware implementation.
> >
> > Acked-by: Ryder Lee <ryder.lee@mediatek.com>
> > Signed-off-by: Jianjun Wang <jianjun.wang@mediatek.com>
> > ---
> > drivers/pci/controller/pcie-mediatek.c | 18 ++++++++++++++++++
> > include/linux/pci_ids.h | 1 +
> > 2 files changed, 19 insertions(+)
> >
> > diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c
> > index 80601e1b939e..e5e6740b635d 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
> > @@ -141,12 +142,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);
> > @@ -696,6 +701,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,
> > @@ -1216,11 +1224,21 @@ 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 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 70e86148cb1e..aa32962759b2 100644
> > --- a/include/linux/pci_ids.h
> > +++ b/include/linux/pci_ids.h
> > @@ -2131,6 +2131,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
>
> Hi Bjorn & Lorenzo,
>
> Is this patch ok or is there anything I need to fixed?
We are getting to it shortly, thanks for your patience.
Lorenzo
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v2,2/2] PCI: mediatek: Add controller support for MT7629
2019-07-29 7:38 ` Jianjun Wang
2019-07-29 15:33 ` Lorenzo Pieralisi
@ 2019-08-06 16:24 ` Lorenzo Pieralisi
2019-08-06 19:50 ` Bjorn Helgaas
2019-08-06 16:33 ` Andrew Murray
2 siblings, 1 reply; 9+ messages in thread
From: Lorenzo Pieralisi @ 2019-08-06 16:24 UTC (permalink / raw)
To: Jianjun Wang, Bjorn Helgaas
Cc: Ryder Lee, Rob Herring, Mark Rutland, Matthias Brugger,
linux-pci, linux-mediatek, devicetree, linux-kernel,
linux-arm-kernel, youlin.pei
[trim the CC list please to keep only required maintainers]
On Mon, Jul 29, 2019 at 03:38:38PM +0800, Jianjun Wang wrote:
> On Fri, 2019-06-28 at 15:34 +0800, Jianjun Wang wrote:
> > MT7629 is an ARM platform SoC which has the same PCIe IP with MT7622.
> >
> > The HW default value of its Device ID is invalid, fix its Device ID to
> > match the hardware implementation.
> >
> > Acked-by: Ryder Lee <ryder.lee@mediatek.com>
> > Signed-off-by: Jianjun Wang <jianjun.wang@mediatek.com>
> > ---
> > drivers/pci/controller/pcie-mediatek.c | 18 ++++++++++++++++++
> > include/linux/pci_ids.h | 1 +
> > 2 files changed, 19 insertions(+)
> >
> > diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c
> > index 80601e1b939e..e5e6740b635d 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
> > @@ -141,12 +142,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);
> > @@ -696,6 +701,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,
> > @@ -1216,11 +1224,21 @@ 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 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 70e86148cb1e..aa32962759b2 100644
> > --- a/include/linux/pci_ids.h
> > +++ b/include/linux/pci_ids.h
> > @@ -2131,6 +2131,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
>
> Hi Bjorn & Lorenzo,
>
> Is this patch ok or is there anything I need to fixed?
The commit log need to be fixed and I will do it, the code if
Bjorn is OK with it I can merge it.
Lorenzo
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v2,2/2] PCI: mediatek: Add controller support for MT7629
2019-07-29 7:38 ` Jianjun Wang
2019-07-29 15:33 ` Lorenzo Pieralisi
2019-08-06 16:24 ` Lorenzo Pieralisi
@ 2019-08-06 16:33 ` Andrew Murray
2 siblings, 0 replies; 9+ messages in thread
From: Andrew Murray @ 2019-08-06 16:33 UTC (permalink / raw)
To: Jianjun Wang
Cc: Bjorn Helgaas, Lorenzo Pieralisi, Ryder Lee, Mark Rutland,
devicetree, linux-pci, youlin.pei, linux-kernel, Rob Herring,
linux-mediatek, Matthias Brugger, linux-arm-kernel
On Mon, Jul 29, 2019 at 03:38:38PM +0800, Jianjun Wang wrote:
> On Fri, 2019-06-28 at 15:34 +0800, Jianjun Wang wrote:
> > MT7629 is an ARM platform SoC which has the same PCIe IP with MT7622.
> >
> > The HW default value of its Device ID is invalid, fix its Device ID to
> > match the hardware implementation.
> >
> > Acked-by: Ryder Lee <ryder.lee@mediatek.com>
> > Signed-off-by: Jianjun Wang <jianjun.wang@mediatek.com>
> > ---
> > drivers/pci/controller/pcie-mediatek.c | 18 ++++++++++++++++++
> > include/linux/pci_ids.h | 1 +
> > 2 files changed, 19 insertions(+)
> >
> > diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c
> > index 80601e1b939e..e5e6740b635d 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
> > @@ -141,12 +142,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
Really trivial nit: s/Device ID/device ID/ to be consistent with class ID above it.
Either way:
Reviewed-by: Andrew Murray <andrew.murray@arm.com>
> > * @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);
> > @@ -696,6 +701,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,
> > @@ -1216,11 +1224,21 @@ 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 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 70e86148cb1e..aa32962759b2 100644
> > --- a/include/linux/pci_ids.h
> > +++ b/include/linux/pci_ids.h
> > @@ -2131,6 +2131,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
>
> Hi Bjorn & Lorenzo,
>
> Is this patch ok or is there anything I need to fixed?
>
> Thanks.
>
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v2,2/2] PCI: mediatek: Add controller support for MT7629
2019-08-06 16:24 ` Lorenzo Pieralisi
@ 2019-08-06 19:50 ` Bjorn Helgaas
0 siblings, 0 replies; 9+ messages in thread
From: Bjorn Helgaas @ 2019-08-06 19:50 UTC (permalink / raw)
To: Lorenzo Pieralisi
Cc: Jianjun Wang, Ryder Lee, Rob Herring, Mark Rutland,
Matthias Brugger, Linux PCI, linux-mediatek, devicetree,
Linux Kernel Mailing List, linux-arm, youlin.pei
On Tue, Aug 6, 2019 at 11:24 AM Lorenzo Pieralisi
<lorenzo.pieralisi@arm.com> wrote:
>
> [trim the CC list please to keep only required maintainers]
>
> On Mon, Jul 29, 2019 at 03:38:38PM +0800, Jianjun Wang wrote:
> > On Fri, 2019-06-28 at 15:34 +0800, Jianjun Wang wrote:
> > > MT7629 is an ARM platform SoC which has the same PCIe IP with MT7622.
> > >
> > > The HW default value of its Device ID is invalid, fix its Device ID to
> > > match the hardware implementation.
> > >
> > > Acked-by: Ryder Lee <ryder.lee@mediatek.com>
> > > Signed-off-by: Jianjun Wang <jianjun.wang@mediatek.com>
> > > ---
> > > drivers/pci/controller/pcie-mediatek.c | 18 ++++++++++++++++++
> > > include/linux/pci_ids.h | 1 +
> > > 2 files changed, 19 insertions(+)
> > >
> > > diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c
> > > index 80601e1b939e..e5e6740b635d 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
> > > @@ -141,12 +142,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);
> > > @@ -696,6 +701,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,
> > > @@ -1216,11 +1224,21 @@ 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 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 70e86148cb1e..aa32962759b2 100644
> > > --- a/include/linux/pci_ids.h
> > > +++ b/include/linux/pci_ids.h
> > > @@ -2131,6 +2131,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
> >
> > Hi Bjorn & Lorenzo,
> >
> > Is this patch ok or is there anything I need to fixed?
>
> The commit log need to be fixed and I will do it, the code if
> Bjorn is OK with it I can merge it.
Sure, I'm fine with this. I don't think there's a need to add
PCI_DEVICE_ID_MEDIATEK_7629, since it's only used in one place, but
I'm fine with the code.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v2,0/2] PCI: mediatek: Add support for MT7629
2019-06-28 7:34 [v2,0/2] PCI: mediatek: Add support for MT7629 Jianjun Wang
2019-06-28 7:34 ` [v2,1/2] dt-bindings: PCI: " Jianjun Wang
2019-06-28 7:34 ` [v2,2/2] PCI: mediatek: Add controller " Jianjun Wang
@ 2019-08-07 10:57 ` Lorenzo Pieralisi
2 siblings, 0 replies; 9+ messages in thread
From: Lorenzo Pieralisi @ 2019-08-07 10:57 UTC (permalink / raw)
To: Jianjun Wang
Cc: Ryder Lee, Bjorn Helgaas, Rob Herring, Mark Rutland,
Matthias Brugger, linux-pci, linux-mediatek, devicetree,
linux-kernel, linux-arm-kernel, youlin.pei
On Fri, Jun 28, 2019 at 03:34:23PM +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 | 18 ++++++++++++++++++
> include/linux/pci_ids.h | 1 +
> 3 files changed, 20 insertions(+)
Applied to pci/mediatek for v5.4.
Thanks,
Lorenzo
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-08-07 10:57 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-28 7:34 [v2,0/2] PCI: mediatek: Add support for MT7629 Jianjun Wang
2019-06-28 7:34 ` [v2,1/2] dt-bindings: PCI: " Jianjun Wang
2019-06-28 7:34 ` [v2,2/2] PCI: mediatek: Add controller " Jianjun Wang
2019-07-29 7:38 ` Jianjun Wang
2019-07-29 15:33 ` Lorenzo Pieralisi
2019-08-06 16:24 ` Lorenzo Pieralisi
2019-08-06 19:50 ` Bjorn Helgaas
2019-08-06 16:33 ` Andrew Murray
2019-08-07 10:57 ` [v2,0/2] PCI: mediatek: Add " Lorenzo Pieralisi
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).