From 434f84b7498335510cb11fae4d0b64c3570ddc9a Mon Sep 17 00:00:00 2001 From: Roger Quadros Date: Fri, 12 Jan 2024 14:49:47 +0200 Subject: board: ti: j721e: Drop SERDES PHY init from board file Since commit 69b19ca67bcb ("arm: dts: k3-j721e: Sync with v6.6-rc1"), the following error message is seen at u-boot "Sierra init failed:-19" Probing and initializing the SERDES PHY from board file is not a clean solution so drop it. Proper use case should be via PHY_UCLASS APIs. Signed-off-by: Roger Quadros --- board/ti/j721e/evm.c | 77 ---------------------------------------------------- 1 file changed, 77 deletions(-) diff --git a/board/ti/j721e/evm.c b/board/ti/j721e/evm.c index c541880107e..b77cffc5ef5 100644 --- a/board/ti/j721e/evm.c +++ b/board/ti/j721e/evm.c @@ -352,77 +352,6 @@ static int probe_daughtercards(void) } #endif -void configure_serdes_torrent(void) -{ - struct udevice *dev; - struct phy serdes; - int ret; - - if (!IS_ENABLED(CONFIG_PHY_CADENCE_TORRENT)) - return; - - ret = uclass_get_device_by_driver(UCLASS_PHY, - DM_DRIVER_GET(torrent_phy_provider), - &dev); - if (ret) { - printf("Torrent init failed:%d\n", ret); - return; - } - - serdes.dev = dev; - serdes.id = 0; - - ret = generic_phy_init(&serdes); - if (ret) { - printf("phy_init failed!!: %d\n", ret); - return; - } - - ret = generic_phy_power_on(&serdes); - if (ret) { - printf("phy_power_on failed!!: %d\n", ret); - return; - } -} - -void configure_serdes_sierra(void) -{ - struct udevice *dev, *link_dev; - struct phy link; - int ret, count, i; - int link_count = 0; - - if (!IS_ENABLED(CONFIG_PHY_CADENCE_SIERRA)) - return; - - ret = uclass_get_device_by_driver(UCLASS_MISC, - DM_DRIVER_GET(sierra_phy_provider), - &dev); - if (ret) { - printf("Sierra init failed:%d\n", ret); - return; - } - - count = device_get_child_count(dev); - for (i = 0; i < count; i++) { - ret = device_get_child(dev, i, &link_dev); - if (ret) { - printf("probe of sierra child node %d failed: %d\n", i, ret); - return; - } - if (link_dev->driver->id == UCLASS_PHY) { - link.dev = link_dev; - link.id = link_count++; - - ret = generic_phy_power_on(&link); - if (ret) { - printf("phy_power_on failed!!: %d\n", ret); - return; - } - } - } -} - #ifdef CONFIG_BOARD_LATE_INIT static void setup_board_eeprom_env(void) { @@ -476,12 +405,6 @@ int board_late_init(void) probe_daughtercards(); } - if (board_is_j7200_som()) - configure_serdes_torrent(); - - if (board_is_j721e_som()) - configure_serdes_sierra(); - return 0; } #endif -- cgit v1.3.1 From cd295286c786ba731190dcf5399f29e0a9189955 Mon Sep 17 00:00:00 2001 From: Roger Quadros Date: Fri, 12 Jan 2024 14:49:48 +0200 Subject: usb: cdns3: avoid error messages if phys don't exist The phys property is optional so don't complain if it doesn't exist in device tree. Signed-off-by: Roger Quadros --- drivers/usb/cdns3/core.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c index 644a9791b9c..12a741c6ea7 100644 --- a/drivers/usb/cdns3/core.c +++ b/drivers/usb/cdns3/core.c @@ -333,20 +333,28 @@ static int cdns3_probe(struct cdns3 *cdns) mutex_init(&cdns->mutex); ret = generic_phy_get_by_name(dev, "cdns3,usb2-phy", &cdns->usb2_phy); - if (ret) - dev_warn(dev, "Unable to get USB2 phy (ret %d)\n", ret); - - ret = generic_phy_init(&cdns->usb2_phy); - if (ret) + if (!ret) { + ret = generic_phy_init(&cdns->usb2_phy); + if (ret) { + dev_err(dev, "USB2 PHY init failed: %d\n", ret); + return ret; + } + } else if (ret != -ENOENT && ret != -ENODATA) { + dev_err(dev, "Couldn't get USB2 PHY: %d\n", ret); return ret; + } ret = generic_phy_get_by_name(dev, "cdns3,usb3-phy", &cdns->usb3_phy); - if (ret) - dev_warn(dev, "Unable to get USB3 phy (ret %d)\n", ret); - - ret = generic_phy_init(&cdns->usb3_phy); - if (ret) + if (!ret) { + ret = generic_phy_init(&cdns->usb3_phy); + if (ret) { + dev_err(dev, "USB3 PHY init failed: %d\n", ret); + return ret; + } + } else if (ret != -ENOENT && ret != -ENODATA) { + dev_err(dev, "Couldn't get USB3 PHY: %d\n", ret); return ret; + } ret = generic_phy_power_on(&cdns->usb2_phy); if (ret) -- cgit v1.3.1 From 7d5a12018ee2ac51febaf36f7a5bf86830bf10f1 Mon Sep 17 00:00:00 2001 From: Roger Quadros Date: Fri, 12 Jan 2024 14:49:49 +0200 Subject: arm: dts: k3-j721e: Fix USB0 operation Without correct SERDES MUX and Lane control settings USB0 will be broken. Set the MUX and Lane control devices to be auto probed so they are configured correctly. Fixes: 69b19ca67bcb ("arm: dts: k3-j721e: Sync with v6.6-rc1") Signed-off-by: Roger Quadros --- arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi | 8 ++++++++ arch/arm/dts/k3-j721e-sk-u-boot.dtsi | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi b/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi index b77f8d92de3..7ae7cf3d4c9 100644 --- a/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi +++ b/arch/arm/dts/k3-j721e-common-proc-board-u-boot.dtsi @@ -93,6 +93,14 @@ bootph-all; }; +&serdes_ln_ctrl { + u-boot,mux-autoprobe; +}; + +&usb_serdes_mux { + u-boot,mux-autoprobe; +}; + &main_usbss0_pins_default { bootph-all; }; diff --git a/arch/arm/dts/k3-j721e-sk-u-boot.dtsi b/arch/arm/dts/k3-j721e-sk-u-boot.dtsi index 370fe5190b2..479b7bcd6f8 100644 --- a/arch/arm/dts/k3-j721e-sk-u-boot.dtsi +++ b/arch/arm/dts/k3-j721e-sk-u-boot.dtsi @@ -89,6 +89,14 @@ bootph-all; }; +&serdes_ln_ctrl { + u-boot,mux-autoprobe; +}; + +&usb_serdes_mux { + u-boot,mux-autoprobe; +}; + &main_usbss0_pins_default { bootph-all; }; -- cgit v1.3.1 From 17d3cb76103e0e3da9ae1949f40986025f2f5915 Mon Sep 17 00:00:00 2001 From: Roger Quadros Date: Fri, 12 Jan 2024 14:49:50 +0200 Subject: arm: dts: k3-j721e-beagleboneai64: Fix USB operation Without correct SERDES MUX and Lane control settings USB0 will be broken. Set the MUX and Lane control devices to be auto probed so they are configured correctly. Signed-off-by: Roger Quadros --- arch/arm/dts/k3-j721e-beagleboneai64-u-boot.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm/dts/k3-j721e-beagleboneai64-u-boot.dtsi b/arch/arm/dts/k3-j721e-beagleboneai64-u-boot.dtsi index f83caf79988..017a5a722e0 100644 --- a/arch/arm/dts/k3-j721e-beagleboneai64-u-boot.dtsi +++ b/arch/arm/dts/k3-j721e-beagleboneai64-u-boot.dtsi @@ -165,6 +165,7 @@ &serdes_ln_ctrl { bootph-all; + u-boot,mux-autoprobe; }; &serdes2_usb_link { @@ -173,6 +174,7 @@ &usb_serdes_mux { bootph-all; + u-boot,mux-autoprobe; }; &serdes_wiz2 { -- cgit v1.3.1 From 172c846f39f19738630a3a1854689f7df1a08312 Mon Sep 17 00:00:00 2001 From: Roger Quadros Date: Fri, 12 Jan 2024 14:49:51 +0200 Subject: configs/j721e_beagleboneai64_a72_defconfig: Enable Sierra PHY This is required for USB Super-Speed operation. Signed-off-by: Roger Quadros --- configs/j721e_beagleboneai64_a72_defconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configs/j721e_beagleboneai64_a72_defconfig b/configs/j721e_beagleboneai64_a72_defconfig index 959f86844d3..f66206f6e37 100644 --- a/configs/j721e_beagleboneai64_a72_defconfig +++ b/configs/j721e_beagleboneai64_a72_defconfig @@ -127,6 +127,8 @@ CONFIG_PHY_TI_DP83867=y CONFIG_PHY_FIXED=y CONFIG_TI_AM65_CPSW_NUSS=y CONFIG_PHY=y +CONFIG_PHY_J721E_WIZ=y +CONFIG_PHY_CADENCE_SIERRA=y CONFIG_SPL_PHY=y CONFIG_PINCTRL=y # CONFIG_PINCTRL_GENERIC is not set -- cgit v1.3.1