| bc148def | 08-Jan-2026 |
Sven Peter <sven@kernel.org> |
phy: apple: atc: Reset USB2 PHY during probe as well
Now that the upstream Type-C PHY code is getting broader test coverage we got reports of USB devices plugged in during boot or those plugged in f
phy: apple: atc: Reset USB2 PHY during probe as well
Now that the upstream Type-C PHY code is getting broader test coverage we got reports of USB devices plugged in during boot or those plugged in for the first time after boot occasionally not working correctly. This is partially caused by the USB2 parts of the PHY being left in an unknown state by the previous boot stages. We reset all other parts during probe but forgot about the USB2 PHY so let's fix that and actually reset and power off the USB2 PHY as well.
Reported-by: James Calligeros <jcalligeros99@gmail.com> Reported-by: Janne Grunau <j@jannau.net> Fixes: 8e98ca1e74db ("phy: apple: Add Apple Type-C PHY") Signed-off-by: Sven Peter <sven@kernel.org> Reviewed-by: Janne Grunau <j@jannau.net> Tested-by: Janne Grunau <j@jannau.net> Link: https://patch.msgid.link/20260108-atcphy-coldboot-fix-v1-1-01c41c6e84f2@kernel.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
show more ...
|
| 7d55b44e | 04-Jan-2026 |
Sven Peter <sven@kernel.org> |
phy: apple: atc: Actually check return value of devm_apple_tunable_parse
Let's actually check the return value of devm_apple_tunable_parse instead of trying to check IS_ERR on a pointer to the retur
phy: apple: atc: Actually check return value of devm_apple_tunable_parse
Let's actually check the return value of devm_apple_tunable_parse instead of trying to check IS_ERR on a pointer to the return value which is always going to be valid. This prevent a oops when the tunables are invalid or when they don't exist:
[ 57.664567] Unable to handle kernel paging request at virtual address fffffffffffffffe [ 57.664584] Mem abort info: [ 57.664589] ESR = 0x0000000096000007 [ 57.664595] EC = 0x25: DABT (current EL), IL = 32 bits [ 57.664602] SET = 0, FnV = 0 [ 57.664607] EA = 0, S1PTW = 0 [ 57.664611] FSC = 0x07: level 3 translation fault [ 57.664617] Data abort info: [ 57.664621] ISV = 0, ISS = 0x00000007, ISS2 = 0x00000000 [ 57.664626] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 [ 57.664631] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 [ 57.664640] swapper pgtable: 16k pages, 47-bit VAs, pgdp=0000000b4391c000 [ 57.664647] [fffffffffffffffe] pgd=0000000000000000, p4d=0000000000000000, pud=0000000b44188403, pmd=0000000b4418c403, pte=0000000000000000 [ 57.664670] Internal error: Oops: 0000000096000007 [#1] SMP [ 57.665047] CPU: 1 UID: 0 PID: 23 Comm: kworker/1:0 Tainted: G S 6.18.2+ #2 PREEMPTLAZY [ 57.665061] Tainted: [S]=CPU_OUT_OF_SPEC [ 57.665066] Hardware name: Apple Mac mini (M1, 2020) (DT) [ 57.665072] Workqueue: events cd321x_update_work [tps6598x] [ 57.665100] pstate: 61400009 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--) [ 57.665111] pc : apple_tunable_apply+0x8/0x80 [apple_tunable] [ 57.665121] lr : atcphy_mux_set+0x3e0/0x1138 [phy_apple_atc] [ 57.665133] sp : ffffc000802a7c00 [ 57.665138] x29: ffffc000802a7c00 x28: 0000000000000003 x27: ffff800016c84080 [ 57.665151] x26: 0000000000000002 x25: ffff800016c84090 x24: ffff800016c8408f [ 57.665163] x23: 0000000000020004 x22: 0000000000000001 x21: 0000000000000006 [ 57.665175] x20: ffff80000d6da9b0 x19: ffff80000d6da880 x18: 0000000000000002 [ 57.665188] x17: 0000000000000000 x16: ffffe22de59e0e38 x15: 0000000000000002 [ 57.665199] x14: ffffe22de76ecff8 x13: 0000000000000001 x12: ffff9dd5f90bc000 [ 57.665211] x11: 00000000000000c0 x10: 048abc15ceba0919 x9 : ffffe22dbc5fde10 [ 57.665223] x8 : ffff80000175e0d8 x7 : 0000000000000004 x6 : 0000000000000000 [ 57.665234] x5 : 0000000000000001 x4 : 0000000d6d132db7 x3 : 00000000000155db [ 57.665246] x2 : 0000000000000000 x1 : fffffffffffffffe x0 : ffffc00082b80000 [ 57.665258] Call trace: [ 57.665265] apple_tunable_apply+0x8/0x80 [apple_tunable] (P) [ 57.665276] typec_mux_set+0x74/0xe0 [typec] [ 57.665315] cd321x_update_work+0x440/0x8c0 [tps6598x] [ 57.665332] process_one_work+0x178/0x3d0 [ 57.665346] worker_thread+0x260/0x390 [ 57.665354] kthread+0x150/0x250 [ 57.665369] ret_from_fork+0x10/0x20 [ 57.665386] Code: e69a0ae8 ffffe22d aa1e03e9 d503201f (f9400022) [ 57.665394] ---[ end trace 0000000000000000 ]---
Reported-by: Thomas Glanzmann <thomas@glanzmann.de> Fixes: 8e98ca1e74db ("phy: apple: Add Apple Type-C PHY") Signed-off-by: Sven Peter <sven@kernel.org> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260104-atcphy-tunable-fix-v2-1-84e5c2a57aaa@kernel.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
show more ...
/linux/Documentation/devicetree/bindings/phy/fsl,lynx-28g.yaml/linux/Documentation/devicetree/bindings/phy/phy-common-props.yaml/linux/Documentation/devicetree/bindings/phy/qcom,edp-phy.yaml/linux/Documentation/devicetree/bindings/phy/qcom,m31-eusb2-phy.yaml/linux/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml/linux/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-ufs-phy.yaml/linux/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb3-uni-phy.yaml/linux/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml/linux/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-repeater.yaml/linux/Documentation/devicetree/bindings/phy/samsung,ufs-phy.yaml/linux/Documentation/devicetree/bindings/phy/samsung,usb3-drd-phy.yaml/linux/Documentation/devicetree/bindings/phy/spacemit,usb2-phy.yaml/linux/MAINTAINERS/linux/drivers/phy/Kconfig/linux/drivers/phy/Makefile/linux/drivers/phy/allwinner/phy-sun4i-usb.catc.c/linux/drivers/phy/cadence/phy-cadence-torrent.c/linux/drivers/phy/freescale/phy-fsl-lynx-28g.c/linux/drivers/phy/freescale/phy-fsl-samsung-hdmi.c/linux/drivers/phy/mediatek/phy-mtk-hdmi-mt2701.c/linux/drivers/phy/mediatek/phy-mtk-hdmi-mt8173.c/linux/drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c/linux/drivers/phy/mediatek/phy-mtk-mipi-dsi-mt8173.c/linux/drivers/phy/mediatek/phy-mtk-mipi-dsi-mt8183.c/linux/drivers/phy/mediatek/phy-mtk-xfi-tphy.c/linux/drivers/phy/phy-common-props-test.c/linux/drivers/phy/phy-common-props.c/linux/drivers/phy/phy-core.c/linux/drivers/phy/qualcomm/phy-qcom-edp.c/linux/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c/linux/drivers/phy/qualcomm/phy-qcom-qmp-combo.c/linux/drivers/phy/qualcomm/phy-qcom-qmp-dp-phy-v8.h/linux/drivers/phy/qualcomm/phy-qcom-qmp-dp-qserdes-com-v8.h/linux/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c/linux/drivers/phy/qualcomm/phy-qcom-qmp-pcs-aon-v6.h/linux/drivers/phy/qualcomm/phy-qcom-qmp-pcs-aon-v8.h/linux/drivers/phy/qualcomm/phy-qcom-qmp-pcs-misc-v5.h/linux/drivers/phy/qualcomm/phy-qcom-qmp-pcs-misc-v8.h/linux/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-dp-com-v8.h/linux/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-lalb-v8.h/linux/drivers/phy/qualcomm/phy-qcom-qmp-ufs.c/linux/drivers/phy/qualcomm/phy-qcom-qmp-usb.c/linux/drivers/phy/qualcomm/phy-qcom-qmp-usb43-pcs-v8.h/linux/drivers/phy/qualcomm/phy-qcom-qmp-usb43-qserdes-com-v8.h/linux/drivers/phy/qualcomm/phy-qcom-qmp.h/linux/drivers/phy/renesas/phy-rcar-gen2.c/linux/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c/linux/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c/linux/drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c/linux/drivers/phy/rockchip/phy-rockchip-usb.c/linux/drivers/phy/samsung/phy-exynos5-usbdrd.c/linux/drivers/phy/spacemit/Kconfig/linux/drivers/phy/spacemit/Makefile/linux/drivers/phy/spacemit/phy-k1-usb2.c/linux/drivers/phy/ti/phy-j721e-wiz.c/linux/include/dt-bindings/phy/phy.h/linux/include/linux/phy/phy-common-props.h/linux/include/linux/soc/samsung/exynos-regs-pmu.h |