Message ID | 20230515133643.3621656-1-bryan.odonoghue@linaro.org |
---|---|
Headers | show |
Series | Add Qualcomm PMIC TPCM support | expand |
On 15.05.2023 15:36, Bryan O'Donoghue wrote: > Type-C port management functionality lives inside of the PMIC block on > pm8150b. > > The Type-C port management logic controls orientation detection, vbus/vconn > sense and to send/receive Type-C Power Domain messages. > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Konrad > arch/arm64/boot/dts/qcom/pm8150b.dtsi | 40 +++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/pm8150b.dtsi b/arch/arm64/boot/dts/qcom/pm8150b.dtsi > index 66752cc063d60..136e5f96a3d53 100644 > --- a/arch/arm64/boot/dts/qcom/pm8150b.dtsi > +++ b/arch/arm64/boot/dts/qcom/pm8150b.dtsi > @@ -59,6 +59,46 @@ pm8150b_vbus: usb-vbus-regulator@1100 { > reg = <0x1100>; > }; > > + pm8150b_typec: typec@1500 { > + compatible = "qcom,pm8150b-typec"; > + status = "disabled"; > + reg = <0x1500>, > + <0x1700>; > + interrupts = <0x2 0x15 0x00 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x15 0x01 IRQ_TYPE_EDGE_BOTH>, > + <0x2 0x15 0x02 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x15 0x03 IRQ_TYPE_EDGE_BOTH>, > + <0x2 0x15 0x04 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x15 0x05 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x15 0x06 IRQ_TYPE_EDGE_BOTH>, > + <0x2 0x15 0x07 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x17 0x00 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x17 0x01 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x17 0x02 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x17 0x03 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x17 0x04 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x17 0x05 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x17 0x06 IRQ_TYPE_EDGE_RISING>, > + <0x2 0x17 0x07 IRQ_TYPE_EDGE_RISING>; > + interrupt-names = "or-rid-detect-change", > + "vpd-detect", > + "cc-state-change", > + "vconn-oc", > + "vbus-change", > + "attach-detach", > + "legacy-cable-detect", > + "try-snk-src-detect", > + "sig-tx", > + "sig-rx", > + "msg-tx", > + "msg-rx", > + "msg-tx-failed", > + "msg-tx-discarded", > + "msg-rx-discarded", > + "fr-swap"; > + vdd-vbus-supply = <&pm8150b_vbus>; > + }; > + > pm8150b_temp: temp-alarm@2400 { > compatible = "qcom,spmi-temp-alarm"; > reg = <0x2400>;
On 15/05/2023 16:36, Bryan O'Donoghue wrote: > Switch on usb-role-switching for usb_1 via TCPM. We need to declare > usb-role-switch in &usb_1 and associate with the remote-endpoint in TCPM > which provides the necessary signal. > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- > arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 19 ++++++++++++++++++- > arch/arm64/boot/dts/qcom/sm8250.dtsi | 4 ++++ > 2 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts b/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts > index d80a22bff7969..580ed63c6fb54 100644 > --- a/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts > +++ b/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts > @@ -1273,7 +1273,12 @@ &usb_1 { > }; > > &usb_1_dwc3 { > - dr_mode = "peripheral"; > + dr_mode = "otg"; > + usb-role-switch; > +}; > + > +&usb_1_dwc3_role_switch_in { > + remote-endpoint = <&pm8150b_role_switch_out>; > }; > > &usb_1_hsphy { > @@ -1362,5 +1367,17 @@ connector { > PDO_FIXED_DUAL_ROLE | > PDO_FIXED_USB_COMM | > PDO_FIXED_DATA_SWAP)>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; Empty line before the child node, please. > + pm8150b_role_switch_out: endpoint { > + remote-endpoint = <&usb_1_dwc3_role_switch_in>; > + }; > + }; > + }; > }; > }; > diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi > index 0bc7486e59e54..b9f55a9ef89f8 100644 > --- a/arch/arm64/boot/dts/qcom/sm8250.dtsi > +++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi > @@ -3740,6 +3740,10 @@ usb_1_dwc3: usb@a600000 { > snps,dis_enblslpm_quirk; > phys = <&usb_1_hsphy>, <&usb_1_ssphy>; > phy-names = "usb2-phy", "usb3-phy"; > + > + port { > + usb_1_dwc3_role_switch_in: endpoint {}; > + }; > }; > }; >
On 15/05/2023 16:36, Bryan O'Donoghue wrote: > Switch on USB orientation-switching for usb_1_qmp via TCPM. Detecting the > orientation switch is required to get the PHY to reset and bring-up the PHY > with the CC lines set to the appropriate lane. > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- > arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 11 +++++++++++ > arch/arm64/boot/dts/qcom/sm8250.dtsi | 1 + > 2 files changed, 12 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts b/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts > index 580ed63c6fb54..9b314c390e3f8 100644 > --- a/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts > +++ b/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts > @@ -1294,6 +1294,11 @@ &usb_1_qmpphy { > > vdda-phy-supply = <&vreg_l9a_1p2>; > vdda-pll-supply = <&vreg_l18a_0p92>; > + orientation-switch; > +}; > + > +&usb_1_qmpphy_typec_mux_in { > + remote-endpoint = <&pm8150b_typec_mux_out>; > }; > > &usb_2 { > @@ -1378,6 +1383,12 @@ pm8150b_role_switch_out: endpoint { > remote-endpoint = <&usb_1_dwc3_role_switch_in>; > }; > }; > + port@1 { > + reg = <1>; Empty line before the child node, please. > + pm8150b_typec_mux_out: endpoint { > + remote-endpoint = <&usb_1_qmpphy_typec_mux_in>; > + }; > + }; > }; > }; > }; > diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi > index b9f55a9ef89f8..f538216f3704f 100644 > --- a/arch/arm64/boot/dts/qcom/sm8250.dtsi > +++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi > @@ -3588,6 +3588,7 @@ ports { > > port@0 { > reg = <0>; And maybe here too. > + usb_1_qmpphy_typec_mux_in: endpoint {}; > }; > > port@1 {
On 15/05/2023 16:36, Bryan O'Donoghue wrote: > Bootable tree > Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/usb-next-23-05-14-qcom-wrapper-typec-mux-bjorn > > V8: > - Makes pm8150b_typec::status = disabled by default - bod > - Greg merged the TCPM description and driver to usb-next so two patches less now. > I've rebased this series on to usb-next using "--base=auto" > All of the kernel robot dts/yaml checks should now pass against usb-next / a4422ff221429c600c3dc5d0394fb3738b89d040 > > V7: > - Adds R/B to "dt-bindings: phy: qcom,sc7180-qmp-usb3-dp-phy: Add input and output ports" - Krzysztof > - Fixes indicated, adds R/B to "dt-bindings: usb: Add Qualcomm PMIC Type-C" - Krzysztof > - Fixes indicated, adds R/B to "usb: typec: qcom: Add Qualcomm PMIC Type-C driver" - Guenter > - Fixes indicated, adds R/B to "usb: typec: qcom: Add Qualcomm PMIC Type-C driver" - Caleb > - Adds R/B to "arm64: dts: qcom: sm8250: Define ports for qmpphy orientation-switching" - Konrad > - Adds R/B to "arm64: dts: qcom: qrb5165-rb5: Switch on Type-C VBUS boost" - Konrad > - Fixes indicated, adds R/B to "arm64: dts: qcom: qrb5165-rb5: Switch on basic TCPM" - Jianhua, Konrad > - Connector ports/endpoints left inside of connector > Documentation/devicetree/bindings/connector/usb-connector.yaml - Jianhua > - dwc3_role_switch_in -> usb_1_dwc3_role_switch_in > qmpphy_typec_mux_in -> usb_1_qmpphy_typec_mux_in > Both ports/endpoints defined inside of pm8150b dtsi - Konrad > > I modified the name of both so that the port/endpoint would be directly > adjacent to the containing node in the dtsi file for code locality/readbility - bod > > - Fixes newline indicated "arm64: dts: qcom: qrb5165-rb5: Switch on TCPM usb-role-switching for usb_1" - Jianhua, Konrad > - Fixes newline indicated "arm64: dts: qcom: qrb5165-rb5: Switch on TCPM orientation-switch for usb_1_qmpphy" - Jianhua, Konrad > > - connector > I have left the connector defintion and its ports/endpoints in the platform dts > > The reason for this > a) Prior art e.g. arch/arm64/boot/dts/qcom/sc8280xp* > b) The connector is really a non-SoC/PMIC component its something that is defined > for your platform. > > I'm open to further debate on this topic: > Link: https://imgflip.com/i/7kw6ck > > - port@1 -> port@1 "arm64: dts: qcom: qrb5165-rb5: Switch on TCPM orientation-switch for usb_1_qmpphy" - Jianhua > > - OF: graph: no port node found in /soc@0/spmi@c440000/pmic@2/typec@1500 > > I left this as-is since the DT model we want is to connect the connector directly to > the PHY for orientation or controller for data-role switching > > I similarly didn't put this hack in place to remove the warning but "it would work" > > V6: > - I'm dropping the previous V1-V6 log because the text is getting too long > here's a link to the previous cover letter instead > Link: https://lore.kernel.org/linux-arm-msm/20230501121111.1058190-1-bryan.odonoghue@linaro.org/ > > > Bryan O'Donoghue (11): > dt-bindings: regulator: qcom,usb-vbus-regulator: Mark reg as required > dt-bindings: regulator: qcom,usb-vbus-regulator: Mark > regulator-*-microamp required > dt-bindings: phy: qcom,sc7180-qmp-usb3-dp-phy: Add orientation-switch > as optional > dt-bindings: phy: qcom,sc7180-qmp-usb3-dp-phy: Add input and output > ports > dt-bindings: mfd: qcom,spmi-pmic: Add typec to SPMI device types > arm64: dts: qcom: sm8250: Define ports for qmpphy > orientation-switching > arm64: dts: qcom: pm8150b: Add a TCPM description > arm64: dts: qcom: qrb5165-rb5: Switch on Type-C VBUS boost > arm64: dts: qcom: qrb5165-rb5: Switch on basic TCPM > arm64: dts: qcom: qrb5165-rb5: Switch on TCPM usb-role-switching for > usb_1 > arm64: dts: qcom: qrb5165-rb5: Switch on TCPM orientation-switch for > usb_1_qmpphy > > .../bindings/mfd/qcom,spmi-pmic.yaml | 4 ++ > .../phy/qcom,sc7180-qmp-usb3-dp-phy.yaml | 44 +++++++++++++++ > .../regulator/qcom,usb-vbus-regulator.yaml | 10 +++- > arch/arm64/boot/dts/qcom/pm8150b.dtsi | 40 +++++++++++++ > arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 56 ++++++++++++++++++- > arch/arm64/boot/dts/qcom/sm8250.dtsi | 18 ++++++ > 6 files changed, 170 insertions(+), 2 deletions(-) Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
On 15/05/2023 16:36, Bryan O'Donoghue wrote: > Switch on VBUS for the Type-C port. We need to support a higher amperage > than the bootloader set 2 Amps. > > Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- > arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts b/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts > index dd924331b0eea..b326bdeeb7742 100644 > --- a/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts > +++ b/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts > @@ -1338,3 +1338,9 @@ &qup_spi0_data_clk { > drive-strength = <6>; > bias-disable; > }; > + > +&pm8150b_vbus { > + regulator-min-microamp = <500000>; > + regulator-max-microamp = <3000000>; > + status = "okay"; > +}; Note, you are placing this declaration (and further changes in the next patches) at the end of the file, in the pinctrl area. Please move them up into a correct place.