mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 23:05:25 -04:00
The Apple Type-C PHY (ATCPHY) is a PHY for USB 2.0, USB 3.x, USB4/Thunderbolt, and DisplayPort connectivity found in Apple Silicon SoCs. The PHY handles muxing between these different protocols and also provides the reset controller for the attached dwc3 USB controller. There is no documentation available for this PHY and the entire sequence of MMIO pokes has been figured out by tracing all MMIO access of Apple's driver under a thin hypervisor and correlating the register reads/writes to their kernel's debug output to find their names. Deviations from this sequence generally results in the port not working or, especially when the mode is switched to USB4 or Thunderbolt, to some watchdog resetting the entire SoC. This initial commit already introduces support for Display Port and USB4/Thunderbolt but the drivers for these are not ready. We cannot control the alternate mode negotiation and are stuck with whatever Apple's firmware decides such that any DisplayPort or USB4/Thunderbolt device will result in a correctly setup PHY but not be usable until the other drivers are upstreamed as well. Co-developed-by: Janne Grunau <j@jannau.net> Signed-off-by: Janne Grunau <j@jannau.net> Co-developed-by: Hector Martin <marcan@marcan.st> Signed-off-by: Hector Martin <marcan@marcan.st> Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> # for reset controller Reviewed-by: Neal Gompa <neal@gompa.dev> Signed-off-by: Sven Peter <sven@kernel.org> Link: https://patch.msgid.link/20251214-b4-atcphy-v3-3-ba82b20e9459@kernel.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
147 lines
4.4 KiB
Plaintext
147 lines
4.4 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# PHY
|
|
#
|
|
|
|
menu "PHY Subsystem"
|
|
|
|
config GENERIC_PHY
|
|
bool "PHY Core"
|
|
help
|
|
Generic PHY support.
|
|
|
|
This framework is designed to provide a generic interface for PHY
|
|
devices present in the kernel. This layer will have the generic
|
|
API by which phy drivers can create PHY using the phy framework and
|
|
phy users can obtain reference to the PHY. All the users of this
|
|
framework should select this config.
|
|
|
|
config GENERIC_PHY_MIPI_DPHY
|
|
bool
|
|
select GENERIC_PHY
|
|
help
|
|
Generic MIPI D-PHY support.
|
|
|
|
Provides a number of helpers a core functions for MIPI D-PHY
|
|
drivers to us.
|
|
|
|
config PHY_LPC18XX_USB_OTG
|
|
tristate "NXP LPC18xx/43xx SoC USB OTG PHY driver"
|
|
depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
|
|
depends on MFD_SYSCON
|
|
select GENERIC_PHY
|
|
help
|
|
Enable this to support NXP LPC18xx/43xx internal USB OTG PHY.
|
|
|
|
This driver is need for USB0 support on LPC18xx/43xx and takes
|
|
care of enabling and clock setup.
|
|
|
|
config PHY_PISTACHIO_USB
|
|
tristate "IMG Pistachio USB2.0 PHY driver"
|
|
depends on MIPS || COMPILE_TEST
|
|
select GENERIC_PHY
|
|
help
|
|
Enable this to support the USB2.0 PHY on the IMG Pistachio SoC.
|
|
|
|
config PHY_SNPS_EUSB2
|
|
tristate "SNPS eUSB2 PHY Driver"
|
|
depends on OF && (ARCH_EXYNOS || ARCH_QCOM || COMPILE_TEST)
|
|
select GENERIC_PHY
|
|
help
|
|
Enable support for the USB high-speed SNPS eUSB2 phy on select
|
|
SoCs. The PHY is usually paired with a Synopsys DWC3 USB controller.
|
|
|
|
config PHY_XGENE
|
|
tristate "APM X-Gene 15Gbps PHY support"
|
|
depends on HAS_IOMEM && OF && (ARCH_XGENE || COMPILE_TEST)
|
|
select GENERIC_PHY
|
|
help
|
|
This option enables support for APM X-Gene SoC multi-purpose PHY.
|
|
|
|
config USB_LGM_PHY
|
|
tristate "INTEL Lightning Mountain USB PHY Driver"
|
|
depends on USB_SUPPORT
|
|
depends on X86 || COMPILE_TEST
|
|
select USB_PHY
|
|
select REGULATOR
|
|
select REGULATOR_FIXED_VOLTAGE
|
|
help
|
|
Enable this to support Intel DWC3 PHY USB phy. This driver provides
|
|
interface to interact with USB GEN-II and USB 3.x PHY that is part
|
|
of the Intel network SOC.
|
|
|
|
config PHY_CAN_TRANSCEIVER
|
|
tristate "CAN transceiver PHY"
|
|
select GENERIC_PHY
|
|
select MULTIPLEXER
|
|
help
|
|
This option enables support for CAN transceivers as a PHY. This
|
|
driver provides function for putting the transceivers in various
|
|
functional modes using gpios and sets the attribute max link
|
|
rate, for CAN drivers.
|
|
|
|
config PHY_AIROHA_PCIE
|
|
tristate "Airoha PCIe-PHY Driver"
|
|
depends on ARCH_AIROHA || COMPILE_TEST
|
|
depends on OF
|
|
select GENERIC_PHY
|
|
help
|
|
Say Y here to add support for Airoha PCIe PHY driver.
|
|
This driver create the basic PHY instance and provides initialize
|
|
callback for PCIe GEN3 port.
|
|
|
|
config PHY_NXP_PTN3222
|
|
tristate "NXP PTN3222 1-port eUSB2 to USB2 redriver"
|
|
depends on I2C
|
|
depends on OF
|
|
select GENERIC_PHY
|
|
help
|
|
Enable this to support NXP PTN3222 1-port eUSB2 to USB2 Redriver.
|
|
This redriver performs translation between eUSB2 and USB2 signalling
|
|
schemes. It supports all three USB 2.0 data rates: Low Speed, Full
|
|
Speed and High Speed.
|
|
|
|
config PHY_SPACEMIT_K1_PCIE
|
|
tristate "PCIe and combo PHY driver for the SpacemiT K1 SoC"
|
|
depends on ARCH_SPACEMIT || COMPILE_TEST
|
|
depends on HAS_IOMEM
|
|
depends on OF
|
|
select GENERIC_PHY
|
|
default ARCH_SPACEMIT
|
|
help
|
|
Enable support for the PCIe and USB 3 combo PHY and two
|
|
PCIe-only PHYs used in the SpacemiT K1 SoC.
|
|
|
|
source "drivers/phy/allwinner/Kconfig"
|
|
source "drivers/phy/amlogic/Kconfig"
|
|
source "drivers/phy/apple/Kconfig"
|
|
source "drivers/phy/broadcom/Kconfig"
|
|
source "drivers/phy/cadence/Kconfig"
|
|
source "drivers/phy/freescale/Kconfig"
|
|
source "drivers/phy/hisilicon/Kconfig"
|
|
source "drivers/phy/ingenic/Kconfig"
|
|
source "drivers/phy/lantiq/Kconfig"
|
|
source "drivers/phy/marvell/Kconfig"
|
|
source "drivers/phy/mediatek/Kconfig"
|
|
source "drivers/phy/microchip/Kconfig"
|
|
source "drivers/phy/motorola/Kconfig"
|
|
source "drivers/phy/mscc/Kconfig"
|
|
source "drivers/phy/nuvoton/Kconfig"
|
|
source "drivers/phy/qualcomm/Kconfig"
|
|
source "drivers/phy/ralink/Kconfig"
|
|
source "drivers/phy/realtek/Kconfig"
|
|
source "drivers/phy/renesas/Kconfig"
|
|
source "drivers/phy/rockchip/Kconfig"
|
|
source "drivers/phy/samsung/Kconfig"
|
|
source "drivers/phy/socionext/Kconfig"
|
|
source "drivers/phy/sophgo/Kconfig"
|
|
source "drivers/phy/st/Kconfig"
|
|
source "drivers/phy/starfive/Kconfig"
|
|
source "drivers/phy/sunplus/Kconfig"
|
|
source "drivers/phy/tegra/Kconfig"
|
|
source "drivers/phy/ti/Kconfig"
|
|
source "drivers/phy/intel/Kconfig"
|
|
source "drivers/phy/xilinx/Kconfig"
|
|
|
|
endmenu
|