linux/drivers/phy
Pali Rohár 934337080c phy: marvell: phy-mvebu-a3700-comphy: Add native kernel implementation
Remove old RPC implementation and add a new native kernel implementation.

The old implementation uses ARM SMC API to issue RPC calls to ARM Trusted
Firmware which provides real implementation of PHY configuration.

But older versions of ARM Trusted Firmware do not provide this PHY
configuration functionality, simply returning: operation not supported; or
worse, some versions provide the configuration functionality incorrectly.

For example the firmware shipped in ESPRESSObin board has this older
version of ARM Trusted Firmware and therefore SATA, USB 3.0 and PCIe
functionality do not work with newer versions of Linux kernel.

Due to the above reasons, the following commits were introduced into Linux,
to workaround these issues by ignoring -EOPNOTSUPP error code from
phy-mvebu-a3700-comphy driver function phy_power_on():

commit 45aefe3d22 ("ata: ahci: mvebu: Make SATA PHY optional for Armada
3720")
commit 3241929b67 ("usb: host: xhci: mvebu: make USB 3.0 PHY optional for
Armada 3720")
commit b0c6ae0f89 ("PCI: aardvark: Fix initialization with old Marvell's
Arm Trusted Firmware")

Replace this RPC implementation with proper native kernel implementation,
which is independent on the firmware. Never return -EOPNOTSUPP for proper
arguments.

This should solve multiple issues with real-world boards, where it is not
possible or really inconvenient to change the firmware. Let's eliminate
these issues.

This implementation is ported directly from Armada 3720 comphy driver found
in newest version of ARM Trusted Firmware source code, but with various
fixes of register names, some added comments, some refactoring due to the
original code not conforming to kernel standards. Also PCIe mode poweroff
support was added here, and PHY reset support. These changes are also going
to be sent to ARM Trusted Firmware.

[ Pali did the porting from ATF.
  I (Marek) then fixed some register names, some various other things,
  added some comments and refactored the code to kernel standards. Also
  fixed PHY poweroff and added PHY reset. ]

Signed-off-by: Pali Rohár <pali@kernel.org>
Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Marek Behún <kabel@kernel.org>
Link: https://lore.kernel.org/r/20220203214444.1508-3-kabel@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2022-02-25 19:12:21 +05:30
..
allwinner phy: sun4i-usb: Add D1 variant 2022-02-25 13:53:21 +05:30
amlogic phy: fixes for 5.17 2022-02-07 10:24:00 +05:30
broadcom phy: phy-brcm-usb: fixup BCM4908 support 2022-02-25 14:32:37 +05:30
cadence phy/cadence: Use of_device_get_match_data() 2022-02-25 13:58:12 +05:30
freescale phy: freescale: i.MX8 PHYs should depend on ARCH_MXC && ARM64 2022-01-27 11:05:18 +05:30
hisilicon phy: HiSilicon: Fix copy and paste bug in error handling 2021-11-23 10:42:13 +05:30
ingenic phy: ingenic: Fix a typo in ingenic_usb_phy_probe() 2021-03-30 23:35:17 +05:30
intel phy: intel: Remove redundant dev_err call in thunderbay_emmc_phy_probe() 2021-12-02 09:46:33 +05:30
lantiq phy: lantiq: rcu-usb2: wait after clock enable 2021-01-13 19:29:03 +05:30
marvell phy: marvell: phy-mvebu-a3700-comphy: Add native kernel implementation 2022-02-25 19:12:21 +05:30
mediatek phy: phy-mtk-tphy: Fix duplicated argument in phy-mtk-tphy 2022-01-27 12:14:34 +05:30
microchip phy: lan966x: Remove set_speed function 2021-12-14 14:24:48 +05:30
motorola phy-for-5.12 2021-02-09 09:32:35 +01:00
mscc
qualcomm phy: qcom: Program SSC only if supported by sink 2022-02-08 11:02:55 +05:30
ralink phy-for-5.14 version 2 2021-06-23 10:33:34 +02:00
renesas phy: renesas: phy-rcar-gen3-usb2: Add USB2.0 PHY support for RZ/G2L 2021-08-06 18:12:30 +05:30
rockchip phy: rockchip: add naneng combo phy for RK3568 2022-02-24 20:13:52 +05:30
samsung phy: samsung: unify naming and describe driver in KConfig 2021-10-01 11:46:20 +05:30
socionext phy: uniphier-usb3ss: fix unintended writing zeros to PHY register 2021-12-24 10:06:38 +05:30
st phy: stm32: fix a refcount leak in stm32_usbphyc_pll_enable() 2022-01-27 11:04:40 +05:30
tegra phy: tegra: xusb: Fix return value of tegra_xusb_find_port_node function 2021-12-14 13:07:21 +05:30
ti phy: ti: tusb1210: Add charger detection 2022-02-25 14:28:07 +05:30
xilinx phy: xilinx: zynqmp: Fix bus width setting for SGMII 2022-01-27 10:55:26 +05:30
Kconfig phy: pistachio-usb: Depend on MIPS || COMPILE_TEST 2021-08-12 16:01:49 +02:00
Makefile phy: phy-can-transceiver: Add support for generic CAN transceiver driver 2021-06-14 11:20:17 +05:30
phy-can-transceiver.c phy: phy-can-transceiver: Make devm_gpiod_get optional 2021-11-23 12:15:08 +05:30
phy-core-mipi-dphy.c phy: dphy: Correct lpx parameter and its derivatives(ta_{get,go,sure}) 2022-02-25 14:14:06 +05:30
phy-core.c phy: Allow a NULL phy name for devm_phy_get() 2021-05-14 17:48:41 +05:30
phy-lgm-usb.c phy: Add USB3 PHY support for Intel LGM SoC 2020-09-11 17:12:49 +05:30
phy-lpc18xx-usb-otg.c
phy-pistachio-usb.c
phy-xgene.c phy: phy-xgene.c: Fix alignment of comment 2021-05-31 14:08:55 +05:30