PCI: imx6: Convert DIRECT_SPEED_CHANGE quirk code to use a flag
Both i.MX7D and i.MX8MQ have the same behaviour when it comes to clearing DIRECT_SPEED_CHANGE bit when no speed change occurs, so to handle variants correctly add a flag instead of checking the IP block variant. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> [lorenzo.pieralisi@arm.com: updated log] Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Reviewed-by: Lucas Stach <l.stach@pengutronix.de> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Fabio Estevam <fabio.estevam@nxp.com> Cc: Chris Healy <cphealy@gmail.com> Cc: Lucas Stach <l.stach@pengutronix.de> Cc: Leonard Crestez <leonard.crestez@nxp.com> Cc: "A.s. Dong" <aisheng.dong@nxp.com> Cc: Richard Zhu <hongxing.zhu@nxp.com>
This commit is contained in:
parent
2f532d07f0
commit
4c458bb347
@ -42,6 +42,7 @@ enum imx6_pcie_variants {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define IMX6_PCIE_FLAG_IMX6_PHY BIT(0)
|
#define IMX6_PCIE_FLAG_IMX6_PHY BIT(0)
|
||||||
|
#define IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE BIT(1)
|
||||||
|
|
||||||
struct imx6_pcie_drvdata {
|
struct imx6_pcie_drvdata {
|
||||||
enum imx6_pcie_variants variant;
|
enum imx6_pcie_variants variant;
|
||||||
@ -710,7 +711,8 @@ static int imx6_pcie_establish_link(struct imx6_pcie *imx6_pcie)
|
|||||||
tmp |= PORT_LOGIC_SPEED_CHANGE;
|
tmp |= PORT_LOGIC_SPEED_CHANGE;
|
||||||
dw_pcie_writel_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL, tmp);
|
dw_pcie_writel_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL, tmp);
|
||||||
|
|
||||||
if (imx6_pcie->drvdata->variant != IMX7D) {
|
if (imx6_pcie->drvdata->flags &
|
||||||
|
IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE) {
|
||||||
/*
|
/*
|
||||||
* On i.MX7, DIRECT_SPEED_CHANGE behaves differently
|
* On i.MX7, DIRECT_SPEED_CHANGE behaves differently
|
||||||
* from i.MX6 family when no link speed transition
|
* from i.MX6 family when no link speed transition
|
||||||
@ -1099,15 +1101,18 @@ static void imx6_pcie_shutdown(struct platform_device *pdev)
|
|||||||
static const struct imx6_pcie_drvdata drvdata[] = {
|
static const struct imx6_pcie_drvdata drvdata[] = {
|
||||||
[IMX6Q] = {
|
[IMX6Q] = {
|
||||||
.variant = IMX6Q,
|
.variant = IMX6Q,
|
||||||
.flags = IMX6_PCIE_FLAG_IMX6_PHY,
|
.flags = IMX6_PCIE_FLAG_IMX6_PHY |
|
||||||
|
IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE,
|
||||||
},
|
},
|
||||||
[IMX6SX] = {
|
[IMX6SX] = {
|
||||||
.variant = IMX6SX,
|
.variant = IMX6SX,
|
||||||
.flags = IMX6_PCIE_FLAG_IMX6_PHY,
|
.flags = IMX6_PCIE_FLAG_IMX6_PHY |
|
||||||
|
IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE,
|
||||||
},
|
},
|
||||||
[IMX6QP] = {
|
[IMX6QP] = {
|
||||||
.variant = IMX6QP,
|
.variant = IMX6QP,
|
||||||
.flags = IMX6_PCIE_FLAG_IMX6_PHY,
|
.flags = IMX6_PCIE_FLAG_IMX6_PHY |
|
||||||
|
IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE,
|
||||||
},
|
},
|
||||||
[IMX7D] = {
|
[IMX7D] = {
|
||||||
.variant = IMX7D,
|
.variant = IMX7D,
|
||||||
|
Loading…
Reference in New Issue
Block a user