
On 1/29/20 2:22 PM, Pedro Jardim wrote:
Hi Marek,
Hi,
please don't top-post and keep the U-Boot ML on CC.
I've made some changes based on VINING 2000 trying to add the DM regulator but it was not successful. The changes that I made were:
diff --git a/arch/arm/dts/imx6sx-sdb.dtsi b/arch/arm/dts/imx6sx-sdb.dtsi index da815527a7..86d56fb332 100644 --- a/arch/arm/dts/imx6sx-sdb.dtsi +++ b/arch/arm/dts/imx6sx-sdb.dtsi @@ -78,6 +78,17 @@ enable-active-high; };
reg_pcie_gpio: regulator-pcie-gpio {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pcie_reg>;
regulator-name = "MPCIE_3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio2 1 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
reg_usb_otg2_vbus: regulator@2 { compatible = "regulator-fixed"; reg = <2>;
@@ -154,6 +165,14 @@ status = "okay"; };
+&pcie {
vbus-supply = <®_pcie_gpio>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pcie>;
reset-gpio = <&gpio4 6 GPIO_ACTIVE_HIGH>;
status = "okay";
+};
&fec1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet1>; @@ -191,6 +210,10 @@ status = "okay"; };
+®_pcie {
regulator-always-on;
+};
&i2c4 { clock-frequency = <100000>; pinctrl-names = "default"; @@ -453,6 +476,18 @@ >; };
pinctrl_pcie: pciegrp {
fsl,pins = <
MX6SX_PAD_ENET1_COL__GPIO2_IO_0 0x10b0
>;
};
pinctrl_pcie_reg: pciereggrp {
fsl,pins = <
MX6SX_PAD_ENET1_CRS__GPIO2_IO_1 0x10b0
>;
};
pinctrl_peri_3v3: peri3v3grp { fsl,pins = < MX6SX_PAD_QSPI1A_DATA0__GPIO4_IO_16
0x80000000 diff --git a/configs/mx6sxsabresd_defconfig b/configs/mx6sxsabresd_defconfig index 5150e3a837..10dc3db726 100644 --- a/configs/mx6sxsabresd_defconfig +++ b/configs/mx6sxsabresd_defconfig @@ -68,3 +68,6 @@ CONFIG_USB_STORAGE=y CONFIG_USB_HOST_ETHER=y CONFIG_USB_ETHER_ASIX=y CONFIG_VIDEO=y +CONFIG_DM_PCI=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_PCIE_IMX_POWER_GPIO=y +CONFIG_PCIE_IMX_PERST_GPIO=y diff --git a/include/configs/mx6sxsabresd.h b/include/configs/mx6sxsabresd.h index 55aace1c6e..52aaa82fbc 100644 --- a/include/configs/mx6sxsabresd.h +++ b/include/configs/mx6sxsabresd.h @@ -166,12 +166,10 @@ #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 #endif
-#ifdef CONFIG_CMD_PCI #define CONFIG_PCI_SCAN_SHOW #define CONFIG_PCIE_IMX #define CONFIG_PCIE_IMX_PERST_GPIO IMX_GPIO_NR(2, 0) #define CONFIG_PCIE_IMX_POWER_GPIO IMX_GPIO_NR(2, 1) -#endif
#define CONFIG_IMX_THERMAL
And inside the board I obtained just the PCI 0 output, seen above: => pci enum PCI: Failed autoconfig bar 10 PCI: Failed autoconfig bar 10 => pci 1 Scanning PCI devices on bus 1 BusDevFun VendorId DeviceId Device Class Sub-Class _____________________________________________________________ => pci 0 Scanning PCI devices on bus 0 BusDevFun VendorId DeviceId Device Class Sub-Class _____________________________________________________________ 00.00.00 0x16c3 0xabcd Bridge device 0x04 00.01.00 0x16c3 0xabcd Bridge device 0x04
Do you have any suggestions to why it isn't recognizing the pci 1 bus?
Maybe you need to power up your PCI device or release it from reset?
Thanks! Pedro Jardim
Em ter., 28 de jan. de 2020 às 14:14, Marek Vasut marex@denx.de escreveu:
On 1/28/20 6:11 PM, Pedro Jardim wrote:
Hi Marek,
Hi,
I saw your commit c5773ccdca8a ("pci: imx: Add iMX6SX compatible") and I've been trying to convert the PCI driver to DM_PCI on a mx6sxsabresd board.
I did the following changes:
--git a/arch/arm/dts/imx6sx-sdb.dtsi b/arch/arm/dts/imx6sx-sdb.dtsi index da815527a7..f5b0e9ee3f 100644 --- a/arch/arm/dts/imx6sx-sdb.dtsi +++ b/arch/arm/dts/imx6sx-sdb.dtsi @@ -78,6 +78,17 @@ enable-active-high; };
reg_pcie_gpio: regulator-pcie-gpio {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pcie_reg>;
regulator-name = "MPCIE_3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio2 1 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
reg_usb_otg2_vbus: regulator@2 { compatible = "regulator-fixed"; reg = <2>;
@@ -154,6 +165,14 @@ status = "okay"; };
+&pcie {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pcie>;
reset-gpio = <&gpio2 0 GPIO_ACTIVE_LOW>;
vpcie-supply = <®_pcie_gpio>;
^ Is this even a valid DT ?
[...]
diff --git a/configs/mx6sxsabresd_defconfig b/configs/mx6sxsabresd_defconfig index 5150e3a837..6ce7e01b5f 100644 --- a/configs/mx6sxsabresd_defconfig +++ b/configs/mx6sxsabresd_defconfig @@ -68,3 +68,4 @@ CONFIG_USB_STORAGE=y CONFIG_USB_HOST_ETHER=y CONFIG_USB_ETHER_ASIX=y CONFIG_VIDEO=y +CONFIG_DM_PCI=y
You might need DM regulator somewhere. Take a look at what VINING 2000 does there, the PCI worked on that one.
diff --git a/include/configs/mx6sxsabresd.h b/include/configs/mx6sxsabresd.h index 55aace1c6e..52aaa82fbc 100644 --- a/include/configs/mx6sxsabresd.h +++ b/include/configs/mx6sxsabresd.h @@ -166,12 +166,10 @@ #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 #endif
-#ifdef CONFIG_CMD_PCI #define CONFIG_PCI_SCAN_SHOW #define CONFIG_PCIE_IMX #define CONFIG_PCIE_IMX_PERST_GPIO IMX_GPIO_NR(2, 0) #define CONFIG_PCIE_IMX_POWER_GPIO IMX_GPIO_NR(2, 1) -#endif
#define CONFIG_IMX_THERMAL
Which obtained the following output:
=> pci enum => pci 0 No such bus => pci 1 No such bus
Before the DM conversion. Do you have any suggestions as to why the PCI device is not detected after the DM_PCI conversion? Are you able to get i.MX6SX to detect PCI devices when using DM_PCI?
Yep, see above.
-- Best regards, Marek Vasut