Message ID | 20240113-pmi632-typec-v2-0-182d9aa0a5b3@linaro.org |
---|---|
Headers | show |
Series | usb: typec: qcom-pmic-typec: enable support for PMI632 PMIC | expand |
On Sat, 13 Jan 2024 22:55:43 +0200, Dmitry Baryshkov wrote: > The Qualcomm PMI632 PMIC (found on Qualcomm Robotics RB2 platform) > doesn't support USB Power Delivery. However this PMIC still supports > handling of the Type-C port (orientation detection, etc). Reuse exiting > qcom-pmic-typec driver to support Type-C related functionality of this > PMIC. Use this to enable USB-C connector support on the RB2 platform. > > > [...] Applied, thanks! [03/15] dt-bindings: phy: qcom,msm8998-qmp-usb3-phy: split from sc8280xp PHY schema commit: 159919a184c5ef82fac3605b2390b17a549c06ac [04/15] dt-bindings: phy: qcom,msm8998-qmp-usb3-phy: support USB-C data commit: c1214b579733df7017c0e5f97f26eeb4b66df0c6 [10/15] phy: qcom: qmp-usb: split USB-C PHY driver commit: 19281571a4d5b6049dad9318db081af48818b1d2 [11/15] phy: qcom: qmp-usb: drop dual-lane handling commit: 52cfdc9c6c3306f0bda4f217396f508d3f5459fb [12/15] phy: qcom: qmp-usbc: add support for the Type-C handling commit: dfdaba27b4660ec26de955cf4459499ddb005e2d Best regards,
On Sat Jan 13, 2024 at 9:55 PM CET, Dmitry Baryshkov wrote: > The Qualcomm PMI632 PMIC (found on Qualcomm Robotics RB2 platform) > doesn't support USB Power Delivery. However this PMIC still supports > handling of the Type-C port (orientation detection, etc). Reuse exiting > qcom-pmic-typec driver to support Type-C related functionality of this > PMIC. Use this to enable USB-C connector support on the RB2 platform. Hi Dmitry, I'm happy to report that testing this series on v6.8-rc1 kernel on sdm632-fairphone-fp3 shows that USB role switching is working with this! It's not extensive testing but plugging in a USB stick and USB headphone jack dongle in both directions show up in dmesg as expected, and afterwards also USB networking gadget still works to ssh into the device. My .dts part is a bit different to your RB2 dts since sdm632-fairphone-fp3 doesn't support USB 3.0, only USB 2.0, but otherwise looks pretty similar. I'll send a patch for that once your series has landed. Not sure on which patches it makes sense, but have my: Tested-by: Luca Weiss <luca.weiss@fairphone.com> # sdm632-fairphone-fp3 And for reference: Only thing I've noticed here is "Host supports USB 3.0 SuperSpeed" which is half true, to my knowledge SDM632 does support USB 3.0 but it's not hooked up (for some reason) on most MSM8953/SDM632-based devices. [ 22.986096] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller [ 22.986273] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 1 [ 22.990847] xhci-hcd xhci-hcd.1.auto: hcc params 0x0230f665 hci version 0x100 quirks 0x0000000002000010 [ 22.998260] xhci-hcd xhci-hcd.1.auto: irq 57, io mem 0x07000000 [ 23.007684] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller [ 23.013435] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 2 [ 23.019029] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed [ 23.027696] hub 1-0:1.0: USB hub found [ 23.033167] hub 1-0:1.0: 1 port detected [ 23.037538] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM. [ 23.041853] hub 2-0:1.0: USB hub found [ 23.049034] hub 2-0:1.0: 1 port detected [ 23.120301] qcom,pmic-typec 200f000.spmi:pmic@2:typec@1500: vbus vsafe5v fail [ 23.845537] usb 1-1: new high-speed USB device number 2 using xhci-hcd [ 23.995466] usb-storage 1-1:1.0: USB Mass Storage device detected [ 23.996166] scsi host0: usb-storage 1-1:1.0 [ 25.022547] scsi 0:0:0:0: Direct-Access SanDisk Ultra 1.00 PQ: 0 ANSI: 6 [ 25.023926] sd 0:0:0:0: [sda] 60062500 512-byte logical blocks: (30.8 GB/28.6 GiB) [ 25.030873] sd 0:0:0:0: [sda] Write Protect is off [ 25.037204] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00 [ 25.042395] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 25.070314] sda: sda1 sda2 sda3 [ 25.071050] sd 0:0:0:0: [sda] Attached SCSI removable disk [ 31.347094] usb 1-1: USB disconnect, device number 2 [ 31.364973] xhci-hcd xhci-hcd.1.auto: remove, state 4 [ 31.365149] usb usb2: USB disconnect, device number 1 [ 31.370427] xhci-hcd xhci-hcd.1.auto: USB bus 2 deregistered [ 31.374236] xhci-hcd xhci-hcd.1.auto: remove, state 1 [ 31.379906] usb usb1: USB disconnect, device number 1 [ 31.475790] xhci-hcd xhci-hcd.1.auto: USB bus 1 deregistered Regards Luca > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > Changes in v2: > - Split qcom_pmic_typec_pdphy_set_roles() changes to separate patch > (Konrad) > - Simplified devm_kzalloc / sizeof() argument (Konrad) > - Made start / stop callbacks mandatory (Bryan) > - Reworked Type-C port handling into a backend similar to PD PHY (Bryan) > - Made more qcom-pmic-typec data static const (Bryan) > - Squashed usbc PHY single-lane removal patch (Konrad) > - Further usbc PHY cleanup (Konrad) > - Fixed order of DT properties in pmi632.dtsi (Konrad) > - Instead of specifying bogus PDOs for the port, specify pd-disable and > typec-power-opmode properties for the connector > - Moved orientation-switch / usb-dual-role properties to sm6115.dtsi > (Konrad) > - Linked usb_dwc3_ss and usb_qmpphy_usb_ss_in > - Link to v1: https://lore.kernel.org/r/20240113-pmi632-typec-v1-0-de7dfd459353@linaro.org > > --- > Dmitry Baryshkov (14): > dt-bindings: regulator: qcom,usb-vbus-regulator: add support for PMI632 > dt-bindings: usb: qcom,pmic-typec: add support for the PMI632 block > dt-bindings: phy: qcom,msm8998-qmp-usb3-phy: split from sc8280xp PHY schema > dt-bindings: phy: qcom,msm8998-qmp-usb3-phy: support USB-C data > usb: typec: tcpm: fix the PD disabled case > usb: typec: qcom-pmic-typec: fix arguments of qcom_pmic_typec_pdphy_set_roles > usb: typec: qcom-pmic-typec: allow different implementations for the PD PHY > usb: typec: qcom-pmic-typec: allow different implementations for the port backend > usb: typec: qcom-pmic-typec: add support for PMI632 PMIC > phy: qcom: qmp-usb: split USB-C PHY driver > phy: qcom: qmp-usb: drop dual-lane handling > phy: qcom: qmp-usbc: add support for the Type-C handling > arm64: dts: qcom: pmi632: define USB-C related blocks > arm64: dts: qcom: qrb4210-rb2: enable USB-C port handling > > Vladimir Zapolskiy (1): > arm64: dts: qcom: sm6115: drop pipe clock selection > > .../bindings/phy/qcom,msm8998-qmp-usb3-phy.yaml | 171 +++ > .../phy/qcom,sc8280xp-qmp-usb3-uni-phy.yaml | 22 - > .../regulator/qcom,usb-vbus-regulator.yaml | 9 +- > .../devicetree/bindings/usb/qcom,pmic-typec.yaml | 28 +- > arch/arm64/boot/dts/qcom/pmi632.dtsi | 30 + > arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 50 +- > arch/arm64/boot/dts/qcom/sm6115.dtsi | 44 +- > drivers/phy/qualcomm/Makefile | 2 +- > drivers/phy/qualcomm/phy-qcom-qmp-usb.c | 323 +----- > drivers/phy/qualcomm/phy-qcom-qmp-usbc.c | 1169 ++++++++++++++++++++ > drivers/usb/typec/tcpm/qcom/Makefile | 3 +- > drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 254 +---- > drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.h | 27 + > .../usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 157 ++- > .../usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.h | 94 +- > .../typec/tcpm/qcom/qcom_pmic_typec_pdphy_stub.c | 80 ++ > drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c | 290 ++++- > drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.h | 172 +-- > drivers/usb/typec/tcpm/tcpm.c | 3 +- > 19 files changed, 2058 insertions(+), 870 deletions(-) > --- > base-commit: 9e21984d62c56a0f6d1fc6f76b646212cfd7fe88 > change-id: 20240112-pmi632-typec-4c7533092387 > > Best regards,
On Tue, 23 Jan 2024 at 22:43, Luca Weiss <luca.weiss@fairphone.com> wrote: > > On Sat Jan 13, 2024 at 9:55 PM CET, Dmitry Baryshkov wrote: > > The Qualcomm PMI632 PMIC (found on Qualcomm Robotics RB2 platform) > > doesn't support USB Power Delivery. However this PMIC still supports > > handling of the Type-C port (orientation detection, etc). Reuse exiting > > qcom-pmic-typec driver to support Type-C related functionality of this > > PMIC. Use this to enable USB-C connector support on the RB2 platform. > > Hi Dmitry, > > I'm happy to report that testing this series on v6.8-rc1 kernel on > sdm632-fairphone-fp3 shows that USB role switching is working with this! > > It's not extensive testing but plugging in a USB stick and USB headphone > jack dongle in both directions show up in dmesg as expected, and > afterwards also USB networking gadget still works to ssh into the > device. > > My .dts part is a bit different to your RB2 dts since > sdm632-fairphone-fp3 doesn't support USB 3.0, only USB 2.0, but > otherwise looks pretty similar. I'll send a patch for that once your > series has landed. > > Not sure on which patches it makes sense, but have my: > > Tested-by: Luca Weiss <luca.weiss@fairphone.com> # sdm632-fairphone-fp3 Probably this makes sense on pmi632 patches, as you definitely tested only those and not RB2 ones. > > And for reference: > > Only thing I've noticed here is "Host supports USB 3.0 SuperSpeed" which > is half true, to my knowledge SDM632 does support USB 3.0 but it's not > hooked up (for some reason) on most MSM8953/SDM632-based devices. I suppose it is the same story as SDM660. The SoC supports USB 3.0, but device manufacturers at that time didn't care for the sake of making them cheaper. So development kits had USB 3.0 (e.g. IFC6560), but the actual phones didn't. > > [ 22.986096] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller > [ 22.986273] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 1 > [ 22.990847] xhci-hcd xhci-hcd.1.auto: hcc params 0x0230f665 hci version 0x100 quirks 0x0000000002000010 > [ 22.998260] xhci-hcd xhci-hcd.1.auto: irq 57, io mem 0x07000000 > [ 23.007684] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller > [ 23.013435] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 2 > [ 23.019029] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed > [ 23.027696] hub 1-0:1.0: USB hub found > [ 23.033167] hub 1-0:1.0: 1 port detected > [ 23.037538] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM. > [ 23.041853] hub 2-0:1.0: USB hub found > [ 23.049034] hub 2-0:1.0: 1 port detected > [ 23.120301] qcom,pmic-typec 200f000.spmi:pmic@2:typec@1500: vbus vsafe5v fail > [ 23.845537] usb 1-1: new high-speed USB device number 2 using xhci-hcd > [ 23.995466] usb-storage 1-1:1.0: USB Mass Storage device detected > [ 23.996166] scsi host0: usb-storage 1-1:1.0 > [ 25.022547] scsi 0:0:0:0: Direct-Access SanDisk Ultra 1.00 PQ: 0 ANSI: 6 > [ 25.023926] sd 0:0:0:0: [sda] 60062500 512-byte logical blocks: (30.8 GB/28.6 GiB) > [ 25.030873] sd 0:0:0:0: [sda] Write Protect is off > [ 25.037204] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00 > [ 25.042395] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA > [ 25.070314] sda: sda1 sda2 sda3 > [ 25.071050] sd 0:0:0:0: [sda] Attached SCSI removable disk > > > [ 31.347094] usb 1-1: USB disconnect, device number 2 > [ 31.364973] xhci-hcd xhci-hcd.1.auto: remove, state 4 > [ 31.365149] usb usb2: USB disconnect, device number 1 > [ 31.370427] xhci-hcd xhci-hcd.1.auto: USB bus 2 deregistered > [ 31.374236] xhci-hcd xhci-hcd.1.auto: remove, state 1 > [ 31.379906] usb usb1: USB disconnect, device number 1 > [ 31.475790] xhci-hcd xhci-hcd.1.auto: USB bus 1 deregistered > > Regards > Luca > > > > > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > > --- > > Changes in v2: > > - Split qcom_pmic_typec_pdphy_set_roles() changes to separate patch > > (Konrad) > > - Simplified devm_kzalloc / sizeof() argument (Konrad) > > - Made start / stop callbacks mandatory (Bryan) > > - Reworked Type-C port handling into a backend similar to PD PHY (Bryan) > > - Made more qcom-pmic-typec data static const (Bryan) > > - Squashed usbc PHY single-lane removal patch (Konrad) > > - Further usbc PHY cleanup (Konrad) > > - Fixed order of DT properties in pmi632.dtsi (Konrad) > > - Instead of specifying bogus PDOs for the port, specify pd-disable and > > typec-power-opmode properties for the connector > > - Moved orientation-switch / usb-dual-role properties to sm6115.dtsi > > (Konrad) > > - Linked usb_dwc3_ss and usb_qmpphy_usb_ss_in > > - Link to v1: https://lore.kernel.org/r/20240113-pmi632-typec-v1-0-de7dfd459353@linaro.org > > > > --- > > Dmitry Baryshkov (14): > > dt-bindings: regulator: qcom,usb-vbus-regulator: add support for PMI632 > > dt-bindings: usb: qcom,pmic-typec: add support for the PMI632 block > > dt-bindings: phy: qcom,msm8998-qmp-usb3-phy: split from sc8280xp PHY schema > > dt-bindings: phy: qcom,msm8998-qmp-usb3-phy: support USB-C data > > usb: typec: tcpm: fix the PD disabled case > > usb: typec: qcom-pmic-typec: fix arguments of qcom_pmic_typec_pdphy_set_roles > > usb: typec: qcom-pmic-typec: allow different implementations for the PD PHY > > usb: typec: qcom-pmic-typec: allow different implementations for the port backend > > usb: typec: qcom-pmic-typec: add support for PMI632 PMIC > > phy: qcom: qmp-usb: split USB-C PHY driver > > phy: qcom: qmp-usb: drop dual-lane handling > > phy: qcom: qmp-usbc: add support for the Type-C handling > > arm64: dts: qcom: pmi632: define USB-C related blocks > > arm64: dts: qcom: qrb4210-rb2: enable USB-C port handling > > > > Vladimir Zapolskiy (1): > > arm64: dts: qcom: sm6115: drop pipe clock selection > > > > .../bindings/phy/qcom,msm8998-qmp-usb3-phy.yaml | 171 +++ > > .../phy/qcom,sc8280xp-qmp-usb3-uni-phy.yaml | 22 - > > .../regulator/qcom,usb-vbus-regulator.yaml | 9 +- > > .../devicetree/bindings/usb/qcom,pmic-typec.yaml | 28 +- > > arch/arm64/boot/dts/qcom/pmi632.dtsi | 30 + > > arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 50 +- > > arch/arm64/boot/dts/qcom/sm6115.dtsi | 44 +- > > drivers/phy/qualcomm/Makefile | 2 +- > > drivers/phy/qualcomm/phy-qcom-qmp-usb.c | 323 +----- > > drivers/phy/qualcomm/phy-qcom-qmp-usbc.c | 1169 ++++++++++++++++++++ > > drivers/usb/typec/tcpm/qcom/Makefile | 3 +- > > drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 254 +---- > > drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.h | 27 + > > .../usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 157 ++- > > .../usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.h | 94 +- > > .../typec/tcpm/qcom/qcom_pmic_typec_pdphy_stub.c | 80 ++ > > drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c | 290 ++++- > > drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.h | 172 +-- > > drivers/usb/typec/tcpm/tcpm.c | 3 +- > > 19 files changed, 2058 insertions(+), 870 deletions(-) > > --- > > base-commit: 9e21984d62c56a0f6d1fc6f76b646212cfd7fe88 > > change-id: 20240112-pmi632-typec-4c7533092387 > > > > Best regards, >
The Qualcomm PMI632 PMIC (found on Qualcomm Robotics RB2 platform) doesn't support USB Power Delivery. However this PMIC still supports handling of the Type-C port (orientation detection, etc). Reuse exiting qcom-pmic-typec driver to support Type-C related functionality of this PMIC. Use this to enable USB-C connector support on the RB2 platform. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> --- Changes in v2: - Split qcom_pmic_typec_pdphy_set_roles() changes to separate patch (Konrad) - Simplified devm_kzalloc / sizeof() argument (Konrad) - Made start / stop callbacks mandatory (Bryan) - Reworked Type-C port handling into a backend similar to PD PHY (Bryan) - Made more qcom-pmic-typec data static const (Bryan) - Squashed usbc PHY single-lane removal patch (Konrad) - Further usbc PHY cleanup (Konrad) - Fixed order of DT properties in pmi632.dtsi (Konrad) - Instead of specifying bogus PDOs for the port, specify pd-disable and typec-power-opmode properties for the connector - Moved orientation-switch / usb-dual-role properties to sm6115.dtsi (Konrad) - Linked usb_dwc3_ss and usb_qmpphy_usb_ss_in - Link to v1: https://lore.kernel.org/r/20240113-pmi632-typec-v1-0-de7dfd459353@linaro.org --- Dmitry Baryshkov (14): dt-bindings: regulator: qcom,usb-vbus-regulator: add support for PMI632 dt-bindings: usb: qcom,pmic-typec: add support for the PMI632 block dt-bindings: phy: qcom,msm8998-qmp-usb3-phy: split from sc8280xp PHY schema dt-bindings: phy: qcom,msm8998-qmp-usb3-phy: support USB-C data usb: typec: tcpm: fix the PD disabled case usb: typec: qcom-pmic-typec: fix arguments of qcom_pmic_typec_pdphy_set_roles usb: typec: qcom-pmic-typec: allow different implementations for the PD PHY usb: typec: qcom-pmic-typec: allow different implementations for the port backend usb: typec: qcom-pmic-typec: add support for PMI632 PMIC phy: qcom: qmp-usb: split USB-C PHY driver phy: qcom: qmp-usb: drop dual-lane handling phy: qcom: qmp-usbc: add support for the Type-C handling arm64: dts: qcom: pmi632: define USB-C related blocks arm64: dts: qcom: qrb4210-rb2: enable USB-C port handling Vladimir Zapolskiy (1): arm64: dts: qcom: sm6115: drop pipe clock selection .../bindings/phy/qcom,msm8998-qmp-usb3-phy.yaml | 171 +++ .../phy/qcom,sc8280xp-qmp-usb3-uni-phy.yaml | 22 - .../regulator/qcom,usb-vbus-regulator.yaml | 9 +- .../devicetree/bindings/usb/qcom,pmic-typec.yaml | 28 +- arch/arm64/boot/dts/qcom/pmi632.dtsi | 30 + arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 50 +- arch/arm64/boot/dts/qcom/sm6115.dtsi | 44 +- drivers/phy/qualcomm/Makefile | 2 +- drivers/phy/qualcomm/phy-qcom-qmp-usb.c | 323 +----- drivers/phy/qualcomm/phy-qcom-qmp-usbc.c | 1169 ++++++++++++++++++++ drivers/usb/typec/tcpm/qcom/Makefile | 3 +- drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 254 +---- drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.h | 27 + .../usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 157 ++- .../usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.h | 94 +- .../typec/tcpm/qcom/qcom_pmic_typec_pdphy_stub.c | 80 ++ drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c | 290 ++++- drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.h | 172 +-- drivers/usb/typec/tcpm/tcpm.c | 3 +- 19 files changed, 2058 insertions(+), 870 deletions(-) --- base-commit: 9e21984d62c56a0f6d1fc6f76b646212cfd7fe88 change-id: 20240112-pmi632-typec-4c7533092387 Best regards,