From: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
To: linux@roeck-us.net, heikki.krogerus@linux.intel.com,
gregkh@linuxfoundation.org, andersson@kernel.org,
robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org,
luca.weiss@fairphone.com, lujianhua000@gmail.com,
linux-usb@vger.kernel.org, linux-arm-msm@vger.kernel.org,
devicetree@vger.kernel.org
Cc: konrad.dybcio@linaro.org, caleb.connolly@linaro.org,
bryan.odonoghue@linaro.org, subbaram@quicinc.com,
jackp@quicinc.com, robertom@qti.qualcomm.com
Subject: [PATCH v7 00/13] Add Qualcomm PMIC TPCM support
Date: Mon, 8 May 2023 15:22:55 +0100 [thread overview]
Message-ID: <20230508142308.1656410-1-bryan.odonoghue@linaro.org> (raw)
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/
Bootable tree
Link: https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/linux-next-23-05-07-pm8150b-tcpm-qcom-wrapper-typec-mux-bjorn
Please note patch#5 and patch#6 should be merged in tandem not separately.
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"
&pm8150b_typec {
status = "okay";
+ ports {
+ port@0 {
+ reg = <0>;
+ };
+ };
+
- Fairphone4 / sm7225
pm7250b is a derivative of pm8150b I have the hardware but, haven't booted to test/debug on this hardware yet
- RB3 / sdm845
Caleb has a WIP patchset based on this series which is our next likely upstream candidate
Here's how I'm testing using an RB5/SM8250
A) Confirm device mode works in both orientations
- Boot to a Linux shell
- Run usb-ecm-up.sh [1]
- This provides usb0 on the device side @ 192.168.8.2
- Attach Type-C cable to host PC
- On host PC "sudo ifconfig usb0 192.168.8.1"
- Ping 192.168.8.2 confirming ping works
- Switch cable orientation
- On the PC side re-assign the ip address "sudo ifconfig usb0 192.168.8.1"
- Ping again confirming connectivity
B) Test automatic host-mode transition, orientation and SuperSpeed
- Remove cable from PC
- Attach a Type-C USB key
- Validate the orientation detection
cat /sys/class/typec/port0/orientation
normal
- Confirm the RB5 sees the USB key as a SuperSpeed device
- Remove USB key and physically invert it along the horizontal axis
- Re-insert the key
- Confirm the RB5 sees the USB key as a SuperSpeed device
- Validate the orientation detection
cat /sys/class/typec/port0/orientation
reverse
C) Test Type-C accessory automatic host-mode transition, orientation and SuperSpeed
- Remove USB key from RB5
- Attach a Type-C USB accessory
- Validate the orientation detection
cat /sys/class/typec/port0/orientation
normal
- Attach a SuperSpeed capable USB key to the Type-C accessory
- Confirm the RB5 sees the USB key as a SuperSpeed device
- Remove the USB key from the Type-C accessory
- Remove the Type-C accessory from the RB5
- Physically invert the Type-C accessory along the horizontal axis
- Re-insert the Type-C accessory
- Validate the orientation detection
cat /sys/class/typec/port0/orientation
reverse
- Re-insert the key
- Confirm the RB5 sees the USB key as a SuperSpeed device
D) Goto Test-A
- Confirming that automatic switch to device mode happens
- Repeat the above loop in ~ any order
[1] usb-ecm-up.sh
#!/usr/bin/env bash
# load libcomposite module
modprobe libcomposite
# ensure function is loaded
modprobe usb_f_ecm
modprobe usb_f_ncm
mount -t configfs none /sys/kernel/config/
# create a gadget
mkdir /sys/kernel/config/usb_gadget/g0
# cd to its configfs node
cd /sys/kernel/config/usb_gadget/g0
# configure it (vid/pid can be anything if USB Class is used for driver compat)
echo 0x0525 > idVendor
echo 0xa4a4 > idProduct
# configure its serial/mfg/product
mkdir strings/0x409
echo 0xCAFEBABE > strings/0x409/serialnumber
echo Linaro > strings/0x409/manufacturer
echo qrb5165-rb5 > strings/0x409/product
# create configs
mkdir configs/c.1
mkdir configs/c.1/strings/0x409
# create the function (name must match a usb_f_<name> module such as 'acm')
mkdir functions/ncm.0
echo "CDC ECM" > configs/c.1/strings/0x409/configuration
# associate function with config
ln -s functions/ncm.0 configs/c.1
# Set USB version 3.1
echo 0x0310 > bcdUSB
echo "super-speed-plus" > max_speed
# enable gadget by binding it to a UDC from /sys/class/udc
echo a600000.usb > UDC
# to unbind it: echo "" > UDC; sleep 1; rm -rf /sys/kernel/config/usb_gadget/g0
sleep 1
ifconfig usb0 192.168.8.2
Bryan O'Donoghue (13):
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: usb: Add Qualcomm PMIC Type-C
dt-bindings: mfd: qcom,spmi-pmic: Add typec to SPMI device types
usb: typec: qcom: Add Qualcomm PMIC Type-C driver
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 +-
.../bindings/usb/qcom,pmic-typec.yaml | 190 ++++++
MAINTAINERS | 10 +
arch/arm64/boot/dts/qcom/pm8150b.dtsi | 40 ++
arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 54 +-
arch/arm64/boot/dts/qcom/sm8250.dtsi | 18 +
drivers/usb/typec/Kconfig | 13 -
drivers/usb/typec/Makefile | 1 -
drivers/usb/typec/qcom-pmic-typec.c | 261 --------
drivers/usb/typec/tcpm/Kconfig | 11 +
drivers/usb/typec/tcpm/Makefile | 1 +
drivers/usb/typec/tcpm/qcom/Makefile | 6 +
drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 346 +++++++++++
.../typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 528 +++++++++++++++++
.../typec/tcpm/qcom/qcom_pmic_typec_pdphy.h | 119 ++++
.../typec/tcpm/qcom/qcom_pmic_typec_port.c | 556 ++++++++++++++++++
.../typec/tcpm/qcom/qcom_pmic_typec_port.h | 195 ++++++
19 files changed, 2130 insertions(+), 277 deletions(-)
create mode 100644 Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml
delete mode 100644 drivers/usb/typec/qcom-pmic-typec.c
create mode 100644 drivers/usb/typec/tcpm/qcom/Makefile
create mode 100644 drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c
create mode 100644 drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
create mode 100644 drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.h
create mode 100644 drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
create mode 100644 drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.h
--
2.39.2
next reply other threads:[~2023-05-08 14:23 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-08 14:22 Bryan O'Donoghue [this message]
2023-05-08 14:22 ` [PATCH v7 01/13] dt-bindings: regulator: qcom,usb-vbus-regulator: Mark reg as required Bryan O'Donoghue
2023-05-08 14:22 ` [PATCH v7 02/13] dt-bindings: regulator: qcom,usb-vbus-regulator: Mark regulator-*-microamp required Bryan O'Donoghue
2023-05-08 14:22 ` [PATCH v7 03/13] dt-bindings: phy: qcom,sc7180-qmp-usb3-dp-phy: Add orientation-switch as optional Bryan O'Donoghue
2023-05-08 14:22 ` [PATCH v7 04/13] dt-bindings: phy: qcom,sc7180-qmp-usb3-dp-phy: Add input and output ports Bryan O'Donoghue
2023-05-08 14:23 ` [PATCH v7 05/13] dt-bindings: usb: Add Qualcomm PMIC Type-C Bryan O'Donoghue
2023-05-08 14:23 ` [PATCH v7 06/13] dt-bindings: mfd: qcom,spmi-pmic: Add typec to SPMI device types Bryan O'Donoghue
2023-05-08 17:25 ` Krzysztof Kozlowski
2023-05-08 14:23 ` [PATCH v7 07/13] usb: typec: qcom: Add Qualcomm PMIC Type-C driver Bryan O'Donoghue
2023-05-08 14:23 ` [PATCH v7 08/13] arm64: dts: qcom: sm8250: Define ports for qmpphy orientation-switching Bryan O'Donoghue
2023-05-08 14:23 ` [PATCH v7 09/13] arm64: dts: qcom: pm8150b: Add a TCPM description Bryan O'Donoghue
2023-05-08 14:23 ` [PATCH v7 10/13] arm64: dts: qcom: qrb5165-rb5: Switch on Type-C VBUS boost Bryan O'Donoghue
2023-05-08 14:23 ` [PATCH v7 11/13] arm64: dts: qcom: qrb5165-rb5: Switch on basic TCPM Bryan O'Donoghue
2023-05-08 14:23 ` [PATCH v7 12/13] arm64: dts: qcom: qrb5165-rb5: Switch on TCPM usb-role-switching for usb_1 Bryan O'Donoghue
2023-05-08 14:23 ` [PATCH v7 13/13] arm64: dts: qcom: qrb5165-rb5: Switch on TCPM orientation-switch for usb_1_qmpphy Bryan O'Donoghue
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230508142308.1656410-1-bryan.odonoghue@linaro.org \
--to=bryan.odonoghue@linaro.org \
--cc=andersson@kernel.org \
--cc=caleb.connolly@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=jackp@quicinc.com \
--cc=konrad.dybcio@linaro.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=luca.weiss@fairphone.com \
--cc=lujianhua000@gmail.com \
--cc=robertom@qti.qualcomm.com \
--cc=robh+dt@kernel.org \
--cc=subbaram@quicinc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).