arch/arm64/boot/dts/exynos/google/gs101-oriole.dts | 24 +++++++++++++ arch/arm64/boot/dts/exynos/google/gs101.dtsi | 41 ++++++++++++++++++++++ 2 files changed, 65 insertions(+)
These patches enable USB in peripheral mode on Pixel 6.
We can only support peripheral mode at this stage, as the MAX77759 TCPCI
controller used on Pixel 6 to do the role selection doesn't have a(n
upstream) Linux driver. Therefore the role is defaulted to peripheral
without any endpoints / ports.
For the same reason, we can not detect the orientation of a SS USB-C cable
and therefore it will only establish a link in SS mode in one of the
possible orientations of the cable. In all other cases, the link will be HS.
This series has a dependency on other patches, please see below.
I have mainly tested this as CDC ECM Ethernet device using the following:
mount -t configfs configfs /sys/kernel/config/
modprobe libcomposite
modprobe usb_f_ecm
mkdir /sys/kernel/config/usb_gadget/g3
cd /sys/kernel/config/usb_gadget/g3
echo 0xadad > idVendor
echo 0xddaa > idProduct
mkdir strings/0x409
echo 01234567 > strings/0x409/serialnumber
echo ADADAD > strings/0x409/manufacturer
cat /proc/device-tree/model > strings/0x409/product
# create the function (name must match a usb_f_<name> module such as 'acm')
mkdir functions/ecm.usb0
# stable MAC addresses
echo "6e:27:3a:b9:40:87" > functions/ecm.usb0/dev_addr
echo "ca:49:84:b0:3b:bc" > functions/ecm.usb0/host_addr
mkdir configs/c.1
ln -s functions/ecm.usb0 configs/c.1/
echo $(ls -1 /sys/class/udc/) > UDC
ifconfig usb0 192.168.1.2 up
at which point the other side should detect it and network communication
becomes possible (once the other side also configures its network
interface).
Due to the clock IDs, this series depends on the bindings patch
"dt-bindings: clock: google,gs101-clock: add HSI0 clock management unit" of
the series in
https://lore.kernel.org/r/20240423-hsi0-gs101-v1-0-2c3ddb50c720@linaro.org
The bindings for USB and USB-phy have been proposed as part of:
https://lore.kernel.org/r/20240423-usb-dwc3-gs101-v1-0-2f331f88203f@linaro.org
and
https://lore.kernel.org/r/20240423-usb-phy-gs101-v1-0-ebdcb3ac174d@linaro.org
respectively.
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
André Draszik (2):
arm64: dts: exynos: gs101: add USB & USB-phy nodes
arm64: dts: exynos: gs101-oriole: enable USB on this board
arch/arm64/boot/dts/exynos/google/gs101-oriole.dts | 24 +++++++++++++
arch/arm64/boot/dts/exynos/google/gs101.dtsi | 41 ++++++++++++++++++++++
2 files changed, 65 insertions(+)
---
base-commit: a59668a9397e7245b26e9be85d23f242ff757ae8
change-id: 20240423-usb-dts-gs101-4269e0177c0f
Best regards,
--
André Draszik <andre.draszik@linaro.org>
On 23/04/2024 22:52, André Draszik wrote: > These patches enable USB in peripheral mode on Pixel 6. > > We can only support peripheral mode at this stage, as the MAX77759 TCPCI > controller used on Pixel 6 to do the role selection doesn't have a(n > upstream) Linux driver. Therefore the role is defaulted to peripheral > without any endpoints / ports. > > For the same reason, we can not detect the orientation of a SS USB-C cable > and therefore it will only establish a link in SS mode in one of the > possible orientations of the cable. In all other cases, the link will be HS. > > This series has a dependency on other patches, please see below. > > I have mainly tested this as CDC ECM Ethernet device using the following: > > mount -t configfs configfs /sys/kernel/config/ > modprobe libcomposite > modprobe usb_f_ecm > mkdir /sys/kernel/config/usb_gadget/g3 > cd /sys/kernel/config/usb_gadget/g3 > > echo 0xadad > idVendor > echo 0xddaa > idProduct > mkdir strings/0x409 > echo 01234567 > strings/0x409/serialnumber > echo ADADAD > strings/0x409/manufacturer > cat /proc/device-tree/model > strings/0x409/product > # create the function (name must match a usb_f_<name> module such as 'acm') > mkdir functions/ecm.usb0 > # stable MAC addresses > echo "6e:27:3a:b9:40:87" > functions/ecm.usb0/dev_addr > echo "ca:49:84:b0:3b:bc" > functions/ecm.usb0/host_addr > > mkdir configs/c.1 > ln -s functions/ecm.usb0 configs/c.1/ > echo $(ls -1 /sys/class/udc/) > UDC > > ifconfig usb0 192.168.1.2 up > > at which point the other side should detect it and network communication > becomes possible (once the other side also configures its network > interface). > > Due to the clock IDs, this series depends on the bindings patch > "dt-bindings: clock: google,gs101-clock: add HSI0 clock management unit" of > the series in > https://lore.kernel.org/r/20240423-hsi0-gs101-v1-0-2c3ddb50c720@linaro.org > This is weird. The patchset applied cleanly without DTS parts from above set, but then failed to build. Obviously, because it depends on DTS, even though it is not explicitly said here... But when I applied DTS from above, these two patches fail to apply, so I really wonder how this was organized in the first place. Please rebase. Best regards, Krzysztof
On Sun, 2024-04-28 at 17:59 +0200, Krzysztof Kozlowski wrote: > On 23/04/2024 22:52, André Draszik wrote: > > > > Due to the clock IDs, this series depends on the bindings patch > > "dt-bindings: clock: google,gs101-clock: add HSI0 clock management unit" of > > the series in > > https://lore.kernel.org/r/20240423-hsi0-gs101-v1-0-2c3ddb50c720@linaro.org > > > > This is weird. The patchset applied cleanly without DTS parts from above > set, but then failed to build. Obviously, because it depends on DTS, > even though it is not explicitly said here... Note that this also depends on the DT bindings for USB & phy mentioned in the cover letter, though. I've made that statement more explicit as well. Thanks Krzysztof! Cheers, Andre
On 23/04/2024 22:52, André Draszik wrote: > These patches enable USB in peripheral mode on Pixel 6. > > We can only support peripheral mode at this stage, as the MAX77759 TCPCI > controller used on Pixel 6 to do the role selection doesn't have a(n > upstream) Linux driver. Therefore the role is defaulted to peripheral > without any endpoints / ports. Be sure you run checkpatch *before* sending patches: WARNING: Possible repeated word: 'be' WARNING: Possible repeated word: 'enabled' Best regards, Krzysztof
© 2016 - 2026 Red Hat, Inc.