mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 23:05:25 -04:00
Introduce a driver that supports three PHYs found on the SpacemiT K1 SoC. The first PHY is a combo PHY that can be configured for use for either USB 3 or PCIe. The other two PHYs support PCIe only. All three PHYs must be programmed with an 8 bit receiver termination value, which must be determined dynamically. Only the combo PHY is able to determine this value. The combo PHY performs a special calibration step at probe time to discover this, and that value is used to program each PHY that operates in PCIe mode. The combo PHY must therefore be probed before either of the PCIe-only PHYs will be used. Each PHY has an internal PLL driven from an external oscillator. This PLL started when the PHY is first initialized, and stays on thereafter. During normal operation, the USB or PCIe driver using the PHY must ensure (other) clocks and resets are set up properly. However PCIe mode clocks are enabled and resets are de-asserted temporarily by this driver to perform the calibration step on the combo PHY. Tested-by: Junzhong Pan <panjunzhong@linux.spacemit.com> Signed-off-by: Alex Elder <elder@riscstar.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://lore.kernel.org/all/ba532f8d-a452-40e5-af46-b58b89f70a92@linaro.org/ [1] Tested-by: Yixun Lan <dlan@gentoo.org> Link: https://patch.msgid.link/20251218151235.454997-4-elder@riscstar.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
146 lines
4.3 KiB
Plaintext
146 lines
4.3 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/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
|