Commit 6814d454 authored by Luca Weiss's avatar Luca Weiss Committed by Bjorn Andersson

arm64: dts: qcom: sm7225-fairphone-fp4: Enable USB role switching

Configure the Type-C and VBUS regulator on PM7250B and wire it up to the
USB PHY, so that USB role and orientation switching works.

For now USB Power Delivery properties are skipped / disabled, so that
the (presumably) bootloader-configured charger doesn't get messed with
and we can charge the phone with at least some amount of power.
Reviewed-by: default avatarKonrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: default avatarLuca Weiss <luca.weiss@fairphone.com>
Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20240530-fp4-tcpm-v3-3-612d4bbd5e09@fairphone.comSigned-off-by: default avatarBjorn Andersson <andersson@kernel.org>
parent 6b5b15a1
......@@ -375,6 +375,7 @@ &usb_1 {
};
&usb_1_dwc3 {
/delete-property/ usb-role-switch;
maximum-speed = "super-speed";
dr_mode = "peripheral";
};
......
......@@ -1715,10 +1715,39 @@ usb_1_qmpphy: phy@88e8000 {
<&gcc GCC_USB3_DP_PHY_PRIM_BCR>;
reset-names = "phy", "common";
orientation-switch;
#clock-cells = <1>;
#phy-cells = <1>;
status = "disabled";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
usb_1_qmpphy_out: endpoint {
};
};
port@1 {
reg = <1>;
usb_1_qmpphy_usb_ss_in: endpoint {
remote-endpoint = <&usb_1_dwc3_ss_out>;
};
};
port@2 {
reg = <2>;
usb_1_qmpphy_dp_in: endpoint {
};
};
};
};
dc_noc: interconnect@9160000 {
......@@ -1894,6 +1923,27 @@ usb_1_dwc3: usb@a600000 {
snps,hird-threshold = /bits/ 8 <0x10>;
phys = <&usb_1_hsphy>, <&usb_1_qmpphy QMP_USB43DP_USB3_PHY>;
phy-names = "usb2-phy", "usb3-phy";
usb-role-switch;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
usb_1_dwc3_hs_out: endpoint {
};
};
port@1 {
reg = <1>;
usb_1_dwc3_ss_out: endpoint {
remote-endpoint = <&usb_1_qmpphy_usb_ss_in>;
};
};
};
};
};
......
......@@ -19,6 +19,7 @@
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/usb/pd.h>
#include "sm7225.dtsi"
#include "pm6150l.dtsi"
#include "pm6350.dtsi"
......@@ -543,6 +544,53 @@ conn-therm@1 {
};
};
&pm7250b_typec {
vdd-pdphy-supply = <&vreg_l3a>;
status = "okay";
connector {
compatible = "usb-c-connector";
power-role = "dual";
data-role = "dual";
self-powered;
/*
* Disable USB Power Delivery for now, seems to need extra work
* to support role switching while also letting the battery
* charge still - without charger driver
*/
typec-power-opmode = "default";
pd-disable;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
pm7250b_hs_in: endpoint {
remote-endpoint = <&usb_1_dwc3_hs_out>;
};
};
port@1 {
reg = <1>;
pm7250b_ss_in: endpoint {
remote-endpoint = <&usb_1_qmpphy_out>;
};
};
};
};
};
&pm7250b_vbus {
regulator-min-microamp = <500000>;
regulator-max-microamp = <1500000>;
status = "okay";
};
&pmk8350_rtc {
status = "okay";
};
......@@ -726,7 +774,11 @@ &usb_1 {
&usb_1_dwc3 {
maximum-speed = "super-speed";
dr_mode = "peripheral";
dr_mode = "otg";
};
&usb_1_dwc3_hs_out {
remote-endpoint = <&pm7250b_hs_in>;
};
&usb_1_hsphy {
......@@ -744,6 +796,10 @@ &usb_1_qmpphy {
status = "okay";
};
&usb_1_qmpphy_out {
remote-endpoint = <&pm7250b_ss_in>;
};
&wifi {
vdd-0.8-cx-mx-supply = <&vreg_l4a>;
vdd-1.8-xo-supply = <&vreg_l7a>;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment