#
# Phy drivers for Samsung platforms
#
config PHY_EXYNOS_DP_VIDEO
	tristate "EXYNOS SoC series Display Port PHY driver"
	depends on OF
	depends on ARCH_EXYNOS || COMPILE_TEST
	default ARCH_EXYNOS
	select GENERIC_PHY
	help
	  Support for Display Port PHY found on Samsung EXYNOS SoCs.

config PHY_EXYNOS_MIPI_VIDEO
	tristate "S5P/EXYNOS SoC series MIPI CSI-2/DSI PHY driver"
	depends on HAS_IOMEM
	depends on ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
	select GENERIC_PHY
	default y if ARCH_S5PV210 || ARCH_EXYNOS
	help
	  Support for MIPI CSI-2 and MIPI DSI DPHY found on Samsung S5P
	  and EXYNOS SoCs.

config PHY_EXYNOS_PCIE
	bool "Exynos PCIe PHY driver"
	depends on OF && (ARCH_EXYNOS || COMPILE_TEST)
	select GENERIC_PHY
	help
	  Enable PCIe PHY support for Exynos SoC series.
	  This driver provides PHY interface for Exynos PCIe controller.

config PHY_SAMSUNG_USB2
	tristate "Samsung USB 2.0 PHY driver"
	depends on HAS_IOMEM
	depends on USB_EHCI_EXYNOS || USB_OHCI_EXYNOS || USB_DWC2
	select GENERIC_PHY
	select MFD_SYSCON
	default ARCH_EXYNOS
	help
	  Enable this to support the Samsung USB 2.0 PHY driver for Samsung
	  SoCs. This driver provides the interface for USB 2.0 PHY. Support
	  for particular PHYs will be enabled based on the SoC type in addition
	  to this driver.

config PHY_EXYNOS4210_USB2
	bool
	depends on PHY_SAMSUNG_USB2
	default CPU_EXYNOS4210

config PHY_EXYNOS4X12_USB2
	bool
	depends on PHY_SAMSUNG_USB2
	default SOC_EXYNOS3250 || SOC_EXYNOS4412

config PHY_EXYNOS5250_USB2
	bool
	depends on PHY_SAMSUNG_USB2
	default SOC_EXYNOS5250 || SOC_EXYNOS5420

config PHY_S5PV210_USB2
	bool "Support for S5PV210"
	depends on PHY_SAMSUNG_USB2
	depends on ARCH_S5PV210
	help
	  Enable USB PHY support for S5PV210. This option requires that Samsung
	  USB 2.0 PHY driver is enabled and means that support for this
	  particular SoC is compiled in the driver. In case of S5PV210 two phys
	  are available - device and host.

config PHY_EXYNOS5_USBDRD
	tristate "Exynos5 SoC series USB DRD PHY driver"
	depends on ARCH_EXYNOS && OF
	depends on HAS_IOMEM
	depends on USB_DWC3_EXYNOS
	select GENERIC_PHY
	select MFD_SYSCON
	default y
	help
	  Enable USB DRD PHY support for Exynos 5 SoC series.
	  This driver provides PHY interface for USB 3.0 DRD controller
	  present on Exynos5 SoC series.

config PHY_EXYNOS5250_SATA
	tristate "Exynos5250 Sata SerDes/PHY driver"
	depends on SOC_EXYNOS5250
	depends on HAS_IOMEM
	depends on OF
	select GENERIC_PHY
	select I2C
	select I2C_S3C2410
	select MFD_SYSCON
	help
	  Enable this to support SATA SerDes/Phy found on Samsung's
	  Exynos5250 based SoCs.This SerDes/Phy supports SATA 1.5 Gb/s,
	  SATA 3.0 Gb/s, SATA 6.0 Gb/s speeds. It supports one SATA host
	  port to accept one SATA device.
