Part Number: DRA829V
Tool/software:
Hello experts,
This is all in U-Boot 2024.04. SDK10. Custom board.
I get some troublesome clk errors from the Serdes setup. Depending on how I define the serdes nodes,
different serdes blocks report that error. Can someone help out in finding what is wrong here?
This is our Serdes setup:
SerDes0 lane0: unused SerDes0 lane1: unused SerDes1 lane0: PCIe for future M.2 expansion SerDes1 lane1: PCIe for future M.2 expansion SerDes2 lane0: unused SerDes2 lane1: USB3_1 SerDes3 lane0: USB3_0 swap SerDes3 lane1: USB3_0 SerDes4 lane0: unused SerDes4 lane1: unused SerDes4 lane2: unused SerDes4 lane3: unused
The relevant dts nodes looks like this:
&usb_serdes_mux {
idle-states = <1>, <1>; /* USB0 to SERDES3, USB1 to SERDES2 */
};
&serdes_ln_ctrl {
idle-states = <J721E_SERDES0_LANE0_IP4_UNUSED>, <J721E_SERDES0_LANE1_IP4_UNUSED>,
<J721E_SERDES1_LANE0_PCIE1_LANE0>, <J721E_SERDES1_LANE1_PCIE1_LANE1>,
<J721E_SERDES2_LANE0_IP1_UNUSED>, <J721E_SERDES2_LANE1_USB3_1>,
<J721E_SERDES3_LANE0_USB3_0_SWAP>, <J721E_SERDES3_LANE1_USB3_0>,
<J721E_SERDES4_LANE0_IP2_UNUSED>, <J721E_SERDES4_LANE1_IP2_UNUSED>,
<J721E_SERDES4_LANE2_IP2_UNUSED>, <J721E_SERDES4_LANE3_IP2_UNUSED>;
};
&cmn_refclk1 {
clock-frequency = <100000000>;
};
&wiz1_pll1_refclk {
assigned-clocks = <&wiz1_pll1_refclk>;
assigned-clock-parents = <&cmn_refclk1>;
};
&wiz1_refclk_dig {
assigned-clocks = <&wiz1_refclk_dig>;
assigned-clock-parents = <&cmn_refclk1>;
};
&wiz2_pll1_refclk {
assigned-clocks = <&wiz2_pll1_refclk>;
assigned-clock-parents = <&cmn_refclk1>;
};
&wiz2_refclk_dig {
assigned-clocks = <&wiz2_refclk_dig>;
assigned-clock-parents = <&cmn_refclk1>;
};
&serdes1 {
assigned-clocks = <&serdes1 CDNS_SIERRA_PLL_CMNLC>;
assigned-clock-parents = <&wiz1_pll1_refclk>;
serdes1_pcie_link: phy@0 {
reg = <0>;
cdns,num-lanes = <2>;
#phy-cells = <0>;
cdns,phy-type = <PHY_TYPE_PCIE>;
resets = <&serdes_wiz1 1>, <&serdes_wiz1 2>;
};
};
&serdes2 {
serdes2_usb_link: phy@1 {
reg = <1>;
cdns,num-lanes = <1>;
#phy-cells = <0>;
cdns,phy-type = <PHY_TYPE_USB3>;
resets = <&serdes_wiz2 2>;
};
};
&usbss1 {
pinctrl-names = "default";
pinctrl-0 = <&main_usbss1_pins_default>;
ti,vbus-divider;
};
&usb1 {
dr_mode = "host";
maximum-speed = "super-speed";
phys = <&serdes2_usb_link>;
phy-names = "cdns3,usb3-phy";
};
&serdes_wiz3 {
typec-dir-gpios = <&main_gpio1 3 GPIO_ACTIVE_HIGH>;
typec-dir-debounce-ms = <700>; /* TUSB321, tCCB_DEFAULT 133 ms */
};
&serdes3 {
serdes3_usb_link: phy@0 {
reg = <0>;
cdns,num-lanes = <2>;
#phy-cells = <0>;
cdns,phy-type = <PHY_TYPE_USB3>;
resets = <&serdes_wiz3 1>, <&serdes_wiz3 2>;
};
};
&usbss0 {
pinctrl-names = "default";
pinctrl-0 = <&main_usbss0_pins_default>;
ti,vbus-divider;
};
&usb0 {
dr_mode = "otg";
maximum-speed = "super-speed";
phys = <&serdes3_usb_link>;
phy-names = "cdns3,usb3-phy";
};
And here is a log from booting. I have added debug prints that show the parent as well as the node that fails.
In: serial@2800000 Out: serial@2800000 Err: serial@2800000 clk_get_by_index_nodev: Node 'bus@100000->ethernet@c000000', CLK index 0 /drivers/net/ti/am65-cpsw-nuss.c:791-am65_cpsw_probe_nuss() am65_cpsw_nuss ethernet@c000000: K3 CPSW: nuss_ver: 0x6BA01901 cpsw_ver: 0x6BA80101 ale_ver: 0x00294104 Ports:8 clk_get_by_index_nodev: Node 'bus@100000->wiz@5000000', CLK index 1 clk_get_by_index_nodev: Node 'bus@100000->wiz@5000000', CLK index 2 clk_get_by_index_nodev: Node 'wiz@5000000->serdes@5000000', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5000000->cmn-refclk-dig-div', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5000000->refclk-dig', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5000000->refclk-dig', CLK index 1 clk_get_by_index_nodev: Node 'wiz@5000000->refclk-dig', CLK index 2 clk_get_by_index_nodev: Node 'wiz@5000000->refclk-dig', CLK index 3 clk_get_by_index_nodev: Node 'wiz@5000000->serdes@5000000', CLK index 1 clk_get_by_index_nodev: Node 'wiz@5000000->cmn-refclk1-dig-div', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5000000->pll1-refclk', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5000000->pll1-refclk', CLK index 1 clk_get_by_index_nodev: Node 'wiz@5000000->pll1-refclk', CLK index 2 clk_get_by_index_tail: Node 'wiz@5000000->pll1-refclk', property 'clocks', failed to request CLK index 2: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2 clk_get_by_index_nodev: Node 'wiz@5000000->pll1-refclk', CLK index 3 clk_get_by_index_tail: Node 'wiz@5000000->pll1-refclk', property 'clocks', failed to request CLK index 3: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2 clk_get_by_index_nodev: Node 'wiz@5000000->serdes@5000000', CLK index 2 clk_get_by_index_nodev: Node 'wiz@5000000->pll0-refclk', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5000000->pll0-refclk', CLK index 1 clk_get_by_index_nodev: Node 'wiz@5000000->pll0-refclk', CLK index 2 clk_get_by_index_tail: Node 'wiz@5000000->pll0-refclk', property 'clocks', failed to request CLK index 2: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2 clk_get_by_index_nodev: Node 'wiz@5000000->pll0-refclk', CLK index 3 clk_get_by_index_tail: Node 'wiz@5000000->pll0-refclk', property 'clocks', failed to request CLK index 3: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2 clk_get_by_index_nodev: Node 'wiz@5000000->serdes@5000000', CLK index 3 /drivers/phy/cadence/phy-cadence-sierra.c:1122-cdns_sierra_phy_probe() cdns,sierra serdes@5000000: PHY not found 0x7364 vs 0x0 Sierra init failed:-22 Net: clk_get_by_index_nodev: Node 'ethernet@c000000->mdio@f00', CLK index 0
As you can see in the log, the driver tries to find clocks that are not there:
clk_get_by_index_nodev: Node 'wiz@5000000->pll1-refclk', CLK index 2 clk_get_by_index_tail: Node 'wiz@5000000->pll1-refclk', property 'clocks', failed to request CLK index 2: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2
compare to the main-dts setup:
wiz0_pll1_refclk: pll1-refclk {
clocks = <&k3_clks 292 0>, <&cmn_refclk1>;
#clock-cells = <0>;
assigned-clocks = <&wiz0_pll1_refclk>;
assigned-clock-parents = <&k3_clks 292 0>;
};
&serdes0 {
status = "disabled";
};In: serial@2800000 Out: serial@2800000 Err: serial@2800000 clk_get_by_index_nodev: Node 'bus@100000->ethernet@c000000', CLK index 0 /drivers/net/ti/am65-cpsw-nuss.c:791-am65_cpsw_probe_nuss() am65_cpsw_nuss ethernet@c000000: K3 CPSW: nuss_ver: 0x6BA01901 cpsw_ver: 0x6BA80101 ale_ver: 0x00294104 Ports:8 clk_get_by_index_nodev: Node 'bus@100000->wiz@5010000', CLK index 1 clk_get_by_index_nodev: Node 'bus@100000->wiz@5010000', CLK index 2 clk_get_by_index_nodev: Node 'wiz@5010000->pll1-refclk', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5010000->pll1-refclk', CLK index 1 clk_get_by_index_nodev: Node 'wiz@5010000->pll1-refclk', CLK index 2 clk_get_by_index_tail: Node 'wiz@5010000->pll1-refclk', property 'clocks', failed to request CLK index 2: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2 clk_get_by_index_nodev: Node 'wiz@5010000->pll1-refclk', CLK index 3 clk_get_by_index_tail: Node 'wiz@5010000->pll1-refclk', property 'clocks', failed to request CLK index 3: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2 /drivers/clk/clk-uclass.c:91-clk_get_by_index_tail() get: returning err=-19 Sierra init failed:-19
In: serial@2800000 Out: serial@2800000 Err: serial@2800000 clk_get_by_index_nodev: Node 'bus@100000->ethernet@c000000', CLK index 0 /drivers/net/ti/am65-cpsw-nuss.c:791-am65_cpsw_probe_nuss() am65_cpsw_nuss ethernet@c000000: K3 CPSW: nuss_ver: 0x6BA01901 cpsw_ver: 0x6BA80101 ale_ver: 0x00294104 Ports:8 clk_get_by_index_nodev: Node 'bus@100000->wiz@5020000', CLK index 1 clk_get_by_index_nodev: Node 'bus@100000->wiz@5020000', CLK index 2 clk_get_by_index_nodev: Node 'wiz@5020000->serdes@5020000', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5020000->cmn-refclk-dig-div', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5020000->refclk-dig', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5020000->refclk-dig', CLK index 1 clk_get_by_index_nodev: Node 'wiz@5020000->refclk-dig', CLK index 2 clk_get_by_index_nodev: Node 'wiz@5020000->refclk-dig', CLK index 3 clk_get_by_index_nodev: Node 'wiz@5020000->serdes@5020000', CLK index 1 clk_get_by_index_nodev: Node 'wiz@5020000->cmn-refclk1-dig-div', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5020000->pll0-refclk', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5020000->pll0-refclk', CLK index 1 clk_get_by_index_nodev: Node 'wiz@5020000->pll0-refclk', CLK index 2 clk_get_by_index_tail: Node 'wiz@5020000->pll0-refclk', property 'clocks', failed to request CLK index 2: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2 clk_get_by_index_nodev: Node 'wiz@5020000->pll0-refclk', CLK index 3 clk_get_by_index_tail: Node 'wiz@5020000->pll0-refclk', property 'clocks', failed to request CLK index 3: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2 clk_get_by_index_nodev: Node 'wiz@5020000->pll1-refclk', CLK index 0 clk_get_by_index_nodev: Node 'wiz@5020000->pll1-refclk', CLK index 1 clk_get_by_index_nodev: Node 'wiz@5020000->pll1-refclk', CLK index 2 clk_get_by_index_tail: Node 'wiz@5020000->pll1-refclk', property 'clocks', failed to request CLK index 2: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2 clk_get_by_index_nodev: Node 'wiz@5020000->pll1-refclk', CLK index 3 clk_get_by_index_tail: Node 'wiz@5020000->pll1-refclk', property 'clocks', failed to request CLK index 3: -2 /drivers/clk/clk-uclass.c:112-clk_get_by_index_tail() prop: returning err=-2 clk_get_by_index_nodev: Node 'wiz@5020000->serdes@5020000', CLK index 2 clk_get_by_index_nodev: Node 'wiz@5020000->serdes@5020000', CLK index 3 /drivers/phy/cadence/phy-cadence-sierra.c:1130-cdns_sierra_phy_probe() cdns,sierra serdes@5020000: sierra probed