lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAEg-Je_=Jzp_Rb0DwSjQ4fzYHFtOecneN6JaWgGGv8BEBPnhhw@mail.gmail.com>
Date: Thu, 11 Sep 2025 12:10:21 +0200
From: Neal Gompa <neal@...pa.dev>
To: Sven Peter <sven@...nel.org>
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Rob Herring <robh@...nel.org>, 
	Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>, 
	Felipe Balbi <balbi@...nel.org>, Janne Grunau <j@...nau.net>, 
	Alyssa Rosenzweig <alyssa@...enzweig.io>, Vinod Koul <vkoul@...nel.org>, 
	Kishon Vijay Abraham I <kishon@...nel.org>, Thinh Nguyen <Thinh.Nguyen@...opsys.com>, 
	Heikki Krogerus <heikki.krogerus@...ux.intel.com>, Philipp Zabel <p.zabel@...gutronix.de>, 
	Frank Li <Frank.Li@....com>, Ran Wang <ran.wang_1@....com>, Peter Chen <peter.chen@....com>, 
	linux-usb@...r.kernel.org, devicetree@...r.kernel.org, 
	linux-kernel@...r.kernel.org, asahi@...ts.linux.dev, 
	linux-arm-kernel@...ts.infradead.org, linux-phy@...ts.infradead.org, 
	stable@...nel.org, Hector Martin <marcan@...can.st>, R <rqou@...keley.edu>
Subject: Re: [PATCH v2 00/22] Apple Silicon USB3 support

On Sat, Sep 6, 2025 at 5:43 PM Sven Peter <sven@...nel.org> wrote:
>
> Hi,
>
> With the dwc3 glue approach this is starting to look reasonable to me.
>
> There's still one issue (SuperSpeed devices have a 5 second delay before
> they come up; This has been known for ages and we haven't been able to
> identify the root cause) but otherwise both host and device mode have
> been working quite well across a number of different devices (usb3 only,
> usb3+dp, dp-only, usb4, and the first two combined with a broken c-to-a
> adapter that can trigger a lot of quick plug/unplug events ;)) for me.
>
> With the dwc3 glue driver this series can now also be merged independently
> once it's ready: Patches 1-4 can go through the dwc3 tree, 5-15 through
> tipd, 16-18 should go together through the phy tree, and I'll take the
> DTS changes through my tree. If everyone's happy with the overall
> approach here I can also just send these as individual series.
>
> A tree for testing is again available as apple-usb3-v2 at [5].
>
> Changes in v2:
> - Link to v1: https://lore.kernel.org/r/20250821-atcphy-6-17-v1-0-172beda182b8@kernel.org
> - Fixed dt-binding warnings
> - Extended the glue layer to allow control over mode switching
> - Removed quirks added to dwc3 and implemented them as a glue
>   driver instead as suggested by Thinh
> - Dropped snps,dwc3 fallback compatible since this is neither compatible
>   with the glue driver approach nor is this hardware truly compatible
>   with snps,dwc3 unless the bootloader did a lot of heavy-lifting and
>   left everything in just the right state
> - Dropped atcphy dp-only compatible since this can be detected in other
>   ways or just be driven from the dp controller once we upstream that
> - Fixed duplicate #define in TIPD
> - Use ioremap_np when required instead of just skipping
>   dwc3_power_off_all_roothub_ports
> - Dropped the change that added the USB role to typec_mux_state since
>   the new glue driver approach no longer requires this.
> - Cleaned up some leftover TODOs in atcphy and ran clang-format
> - Reworked tunables.c to use a variable sized member and alloc the
>   entire struct directly
> - Shortened debug messages in atcphy
> - Added DTS changes for t8112 and t600x
> - Call typec_unregister_altmode unconditionally as it's NULL-safe
> - Fixed arre -> arr typo in commit message
> - Drop __func__ from cd321x_interrupt debug print
> - Picked up Heikki's r-b tags
>
> Original cover letter:
>
> This series includes changes to dwc3, tipd and a new phy driver to enable
> USB3 on these machines. There's also some preparations to eventually enable
> DisplayPort AltMode and Thunderbolt but those need future work.
> Overall, this entire setup is quite a mess and we've tried to make it work
> for quite a while now and finally came up with this solution here.
>
> The USB3 controller is a very special kind of broken: It never sees any port
> plug/unplug events that should normally arrive directly at dwc3.
> Additionally, it needs to go through a full hard reset for every new connection
> and most mode change. Details on why this is required are in the commit
> description.
>
> On top of that we need to keep the Type-C PHY bringup and dwc3 bringup tightly
> synchronized. If there's a race between the two systems at best the port stops
> working until a system reboot and at worst there's a watchdog somewhere that
> forcefully resets the entire SoC after ~5 seconds. I've only seen the latter
> when bringing up thunderbolt so far but wouldn't be surprised if it happens
> with just usb3 as well.
>
> The entire bringup/bringup is orchestrated by a TIPD variant called CD321x
> found on these machines. Unlike the original chips we however get no control
> over which mode is negotiated or are even able to see the PDOs or VDOs. We only
> get to know once the mode has been negotiated and have to act accordingly. I
> even went as far as dumping the firmware from the chip to confirm this [1][2].
>
> Hector wrote another summary of this early in January as well [3] and this
> series is the only way we've been able to bring these ports up reliably.
> It's not pretty in some places but I have no other idea how to implement this,
> hence the RFC tag. Happy to discuss other approaches as well.
>
> Both the PHY and the TIPD driver already include changes for DisplayPort
> AltMode and USB4/Thunderbolt. These need additional work though but
> since we can't control the mode devices end up in we can already merge
> them now.
>
> I used phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml as a template for the dt-binding
> for atcphy (especially the ports). That was the most recent binding I found for
> a PHY with similar features.
>
> In order to test this you need to run the latest m1n1 master [4] because the
> 1.5.0 release does not include the code that lifts the tunables from Apple's
> device tree. A kernel tree for testing is also tagged as apple-usb3-v1 at [5].
>
> If the overall approach here is fine and no one can think of a better way to
> support this SoC I'll drop the RFC and include the dts changes for the other
> M1 and M2 machines as well.
>
> Best,
>
> Sven
>
> [1] https://social.treehouse.systems/@sven/111092587315536174
> [2] https://social.treehouse.systems/@sven/111096589846468888
> [3] https://lore.kernel.org/all/fda8b831-1ffc-4087-8e7b-d97779b3ecc5@marcan.st/
> [4] https://github.com/AsahiLinux/m1n1
> [5] https://git.kernel.org/pub/scm/linux/kernel/git/sven/linux.git
>
> Signed-off-by: Sven Peter <sven@...nel.org>
> ---
> To: Sven Peter <sven@...nel.org>
> To: Janne Grunau <j@...nau.net>
> To: Alyssa Rosenzweig <alyssa@...enzweig.io>
> To: Neal Gompa <neal@...pa.dev>
> To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
> To: Rob Herring <robh@...nel.org>
> To: Krzysztof Kozlowski <krzk+dt@...nel.org>
> To: Conor Dooley <conor+dt@...nel.org>
> To: Thinh Nguyen <Thinh.Nguyen@...opsys.com>
> To: Frank Li <Frank.Li@....com>
> To: Ran Wang <ran.wang_1@....com>
> To: Peter Chen <peter.chen@....com>
> To: Philipp Zabel <p.zabel@...gutronix.de>
> To: Heikki Krogerus <heikki.krogerus@...ux.intel.com>
> To: Vinod Koul <vkoul@...nel.org>
> To: Kishon Vijay Abraham I <kishon@...nel.org>
> Cc: asahi@...ts.linux.dev
> Cc: linux-arm-kernel@...ts.infradead.org
> Cc: linux-usb@...r.kernel.org
> Cc: devicetree@...r.kernel.org
> Cc: linux-kernel@...r.kernel.org
> Cc: linux-phy@...ts.infradead.org
>
> ---
> Hector Martin (5):
>       usb: typec: tipd: Update partner identity when power status was updated
>       usb: typec: tipd: Use read_power_status function in probe
>       usb: typec: tipd: Read data status in probe and cache its value
>       usb: typec: tipd: Handle mode transitions for CD321x
>       arm64: dts: apple: t8103: Mark ATC USB AON domains as always-on
>
> Janne Grunau (2):
>       arm64: dts: apple: t8112: Add Apple Type-C PHY and dwc3 nodes
>       arm64: dts: apple: t600x: Add Apple Type-C PHY and dwc3 nodes
>
> Sven Peter (15):
>       dt-bindings: usb: Add Apple dwc3
>       usb: dwc3: dwc3_power_off_all_roothub_ports: Use ioremap_np when required
>       usb: dwc3: glue: Allow more fine grained control over mode switches
>       usb: dwc3: Add Apple Silicon DWC3 glue layer driver
>       usb: typec: tipd: Clear interrupts first
>       usb: typec: tipd: Move initial irq mask to tipd_data
>       usb: typec: tipd: Move switch_power_state to tipd_data
>       usb: typec: tipd: Trace data status for CD321x correctly
>       usb: typec: tipd: Add cd321x struct with separate size
>       usb: typec: tipd: Read USB4, Thunderbolt and DisplayPort status for cd321x
>       usb: typec: tipd: Register DisplayPort and Thunderbolt altmodes for cd321x
>       dt-bindings: phy: Add Apple Type-C PHY
>       soc: apple: Add hardware tunable support
>       phy: apple: Add Apple Type-C PHY
>       arm64: dts: apple: t8103: Add Apple Type-C PHY and dwc3 nodes
>
>  .../devicetree/bindings/phy/apple,atcphy.yaml      |  213 ++
>  .../devicetree/bindings/usb/apple,dwc3.yaml        |   80 +
>  MAINTAINERS                                        |    4 +
>  arch/arm64/boot/dts/apple/t6001.dtsi               |    1 +
>  arch/arm64/boot/dts/apple/t6002-j375d.dts          |  197 +-
>  arch/arm64/boot/dts/apple/t6002.dtsi               |    1 +
>  arch/arm64/boot/dts/apple/t600x-dieX.dtsi          |  212 ++
>  arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi     |  236 +++
>  arch/arm64/boot/dts/apple/t600x-j375.dtsi          |  275 +++
>  arch/arm64/boot/dts/apple/t8103-j274.dts           |   12 +
>  arch/arm64/boot/dts/apple/t8103-j293.dts           |   12 +
>  arch/arm64/boot/dts/apple/t8103-j313.dts           |   12 +
>  arch/arm64/boot/dts/apple/t8103-j456.dts           |   12 +
>  arch/arm64/boot/dts/apple/t8103-j457.dts           |   12 +
>  arch/arm64/boot/dts/apple/t8103-jxxx.dtsi          |  137 ++
>  arch/arm64/boot/dts/apple/t8103-pmgr.dtsi          |    2 +
>  arch/arm64/boot/dts/apple/t8103.dtsi               |  105 +
>  arch/arm64/boot/dts/apple/t8112-j413.dts           |   12 +
>  arch/arm64/boot/dts/apple/t8112-j473.dts           |   11 +
>  arch/arm64/boot/dts/apple/t8112-j493.dts           |   12 +
>  arch/arm64/boot/dts/apple/t8112-jxxx.dtsi          |  137 ++
>  arch/arm64/boot/dts/apple/t8112.dtsi               |  105 +
>  drivers/phy/Kconfig                                |    1 +
>  drivers/phy/Makefile                               |    1 +
>  drivers/phy/apple/Kconfig                          |   14 +
>  drivers/phy/apple/Makefile                         |    4 +
>  drivers/phy/apple/atc.c                            | 2214 ++++++++++++++++++++
>  drivers/soc/apple/Kconfig                          |    4 +
>  drivers/soc/apple/Makefile                         |    3 +
>  drivers/soc/apple/tunable.c                        |   71 +
>  drivers/usb/dwc3/Kconfig                           |   11 +
>  drivers/usb/dwc3/Makefile                          |    1 +
>  drivers/usb/dwc3/core.c                            |   16 +-
>  drivers/usb/dwc3/dwc3-apple.c                      |  425 ++++
>  drivers/usb/dwc3/gadget.c                          |    2 +
>  drivers/usb/dwc3/glue.h                            |   14 +
>  drivers/usb/dwc3/host.c                            |    7 +-
>  drivers/usb/typec/tipd/core.c                      |  564 ++++-
>  drivers/usb/typec/tipd/tps6598x.h                  |    5 +
>  drivers/usb/typec/tipd/trace.h                     |   39 +
>  include/linux/soc/apple/tunable.h                  |   60 +
>  41 files changed, 5192 insertions(+), 64 deletions(-)
> ---
> base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585
> change-id: 20250820-atcphy-6-17-b7eaf23be17c

Series LGTM.

Reviewed-by: Neal Gompa <neal@...pa.dev>


-- 
真実はいつも一つ!/ Always, there's only one truth!

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ