@@ -54,6 +54,7 @@ enum imx6_pcie_variants {
54
54
IMX8MP ,
55
55
IMX8MQ_EP ,
56
56
IMX8MM_EP ,
57
+ IMX8MP_EP ,
57
58
};
58
59
59
60
#define IMX6_PCIE_FLAG_IMX6_PHY BIT(0)
@@ -158,7 +159,8 @@ static unsigned int imx6_pcie_grp_offset(const struct imx6_pcie *imx6_pcie)
158
159
imx6_pcie -> drvdata -> variant != IMX8MQ_EP &&
159
160
imx6_pcie -> drvdata -> variant != IMX8MM &&
160
161
imx6_pcie -> drvdata -> variant != IMX8MM_EP &&
161
- imx6_pcie -> drvdata -> variant != IMX8MP );
162
+ imx6_pcie -> drvdata -> variant != IMX8MP &&
163
+ imx6_pcie -> drvdata -> variant != IMX8MP_EP );
162
164
return imx6_pcie -> controller_id == 1 ? IOMUXC_GPR16 : IOMUXC_GPR14 ;
163
165
}
164
166
@@ -323,6 +325,7 @@ static void imx6_pcie_init_phy(struct imx6_pcie *imx6_pcie)
323
325
case IMX8MM :
324
326
case IMX8MM_EP :
325
327
case IMX8MP :
328
+ case IMX8MP_EP :
326
329
/*
327
330
* The PHY initialization had been done in the PHY
328
331
* driver, break here directly.
@@ -584,6 +587,7 @@ static int imx6_pcie_enable_ref_clk(struct imx6_pcie *imx6_pcie)
584
587
case IMX8MQ :
585
588
case IMX8MQ_EP :
586
589
case IMX8MP :
590
+ case IMX8MP_EP :
587
591
ret = clk_prepare_enable (imx6_pcie -> pcie_aux );
588
592
if (ret ) {
589
593
dev_err (dev , "unable to enable pcie_aux clock\n" );
@@ -631,6 +635,7 @@ static void imx6_pcie_disable_ref_clk(struct imx6_pcie *imx6_pcie)
631
635
case IMX8MQ :
632
636
case IMX8MQ_EP :
633
637
case IMX8MP :
638
+ case IMX8MP_EP :
634
639
clk_disable_unprepare (imx6_pcie -> pcie_aux );
635
640
break ;
636
641
default :
@@ -701,6 +706,7 @@ static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie)
701
706
case IMX8MM :
702
707
case IMX8MM_EP :
703
708
case IMX8MP :
709
+ case IMX8MP_EP :
704
710
reset_control_assert (imx6_pcie -> apps_reset );
705
711
break ;
706
712
case IMX6SX :
@@ -779,6 +785,7 @@ static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
779
785
case IMX8MM :
780
786
case IMX8MM_EP :
781
787
case IMX8MP :
788
+ case IMX8MP_EP :
782
789
break ;
783
790
}
784
791
@@ -831,6 +838,7 @@ static void imx6_pcie_ltssm_enable(struct device *dev)
831
838
case IMX8MM :
832
839
case IMX8MM_EP :
833
840
case IMX8MP :
841
+ case IMX8MP_EP :
834
842
reset_control_deassert (imx6_pcie -> apps_reset );
835
843
break ;
836
844
}
@@ -853,6 +861,7 @@ static void imx6_pcie_ltssm_disable(struct device *dev)
853
861
case IMX8MM :
854
862
case IMX8MM_EP :
855
863
case IMX8MP :
864
+ case IMX8MP_EP :
856
865
reset_control_assert (imx6_pcie -> apps_reset );
857
866
break ;
858
867
}
@@ -1105,6 +1114,7 @@ static int imx6_add_pcie_ep(struct imx6_pcie *imx6_pcie,
1105
1114
switch (imx6_pcie -> drvdata -> variant ) {
1106
1115
case IMX8MQ_EP :
1107
1116
case IMX8MM_EP :
1117
+ case IMX8MP_EP :
1108
1118
pcie_dbi2_offset = SZ_1M ;
1109
1119
break ;
1110
1120
default :
@@ -1319,6 +1329,7 @@ static int imx6_pcie_probe(struct platform_device *pdev)
1319
1329
case IMX8MM :
1320
1330
case IMX8MM_EP :
1321
1331
case IMX8MP :
1332
+ case IMX8MP_EP :
1322
1333
imx6_pcie -> pcie_aux = devm_clk_get (dev , "pcie_aux" );
1323
1334
if (IS_ERR (imx6_pcie -> pcie_aux ))
1324
1335
return dev_err_probe (dev , PTR_ERR (imx6_pcie -> pcie_aux ),
@@ -1488,6 +1499,11 @@ static const struct imx6_pcie_drvdata drvdata[] = {
1488
1499
.mode = DW_PCIE_EP_TYPE ,
1489
1500
.gpr = "fsl,imx8mm-iomuxc-gpr" ,
1490
1501
},
1502
+ [IMX8MP_EP ] = {
1503
+ .variant = IMX8MP_EP ,
1504
+ .mode = DW_PCIE_EP_TYPE ,
1505
+ .gpr = "fsl,imx8mp-iomuxc-gpr" ,
1506
+ },
1491
1507
};
1492
1508
1493
1509
static const struct of_device_id imx6_pcie_of_match [] = {
@@ -1500,6 +1516,7 @@ static const struct of_device_id imx6_pcie_of_match[] = {
1500
1516
{ .compatible = "fsl,imx8mp-pcie" , .data = & drvdata [IMX8MP ], },
1501
1517
{ .compatible = "fsl,imx8mq-pcie-ep" , .data = & drvdata [IMX8MQ_EP ], },
1502
1518
{ .compatible = "fsl,imx8mm-pcie-ep" , .data = & drvdata [IMX8MM_EP ], },
1519
+ { .compatible = "fsl,imx8mp-pcie-ep" , .data = & drvdata [IMX8MP_EP ], },
1503
1520
{},
1504
1521
};
1505
1522
0 commit comments