From: Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
To: Krzysztof Kozlowski <krzk@kernel.org>,
Vinod Koul <vkoul@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
Alim Akhtar <alim.akhtar@samsung.com>,
Kishon Vijay Abraham I <kishon@kernel.org>,
Rob Herring <robh@kernel.org>,
Philipp Zabel <p.zabel@pengutronix.de>
Cc: linux-samsung-soc@vger.kernel.org, linux-phy@lists.infradead.org,
devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org
Subject: [PATCH v4 00/10] phy: samsung: add Exynos2200 SNPS eUSB2 driver
Date: Sat, 12 Apr 2025 23:26:10 +0300 [thread overview]
Message-ID: <20250412202620.738150-1-ivo.ivanov.ivanov1@gmail.com> (raw)
Hey folks,
This patchset adds Exynos2200 support to the existing eUSB2 phy driver,
as well as USBDRD support for that SoC.
The SoC features the same (as far as I can tell from comparing code)
USBDRD 3.2 4nm block that Exynos2400 has, hence the common denominator.
It consists of a SEC USB link controller, Synopsys eUSB2 and Synopsys
USBDP combophy, which are independent underlying hardware blocks of
the USBDRD controller.
In the vendor kernel, everything is handled in the usbdrd controller
driver, with helpers for underlying hardware block functions outside it.
Clocks and regulators are specified and enabled in one node, which makes
it difficult to separate what clocks and regulators go where without
access to schematics or TRMs. The following gates are defined for USB:
CLK_BLK_HSI0_UID_USB32DRD_IPCLKPORT_I_USBSUBCTL_APB_PCLK
CLK_BLK_HSI0_UID_USB32DRD_IPCLKPORT_I_USBDPPHY_CTRL_PCLK
CLK_BLK_HSI0_UID_USB32DRD_IPCLKPORT_I_USBDPPHY_TCA_APB_CLK
CLK_BLK_HSI0_UID_USB32DRD_IPCLKPORT_I_USBLINK_ACLK
CLK_BLK_HSI0_UID_USB32DRD_IPCLKPORT_I_USB32DRD_REF_CLK_40
CLK_BLK_HSI0_UID_USB32DRD_IPCLKPORT_I_EUSB_CTRL_PCLK
CLK_BLK_HSI0_UID_USB32DRD_IPCLKPORT_I_EUSB_APB_CLK
CLK_BLK_HSI0_UID_AS_APB_EUSBPHY_HSI0_IPCLKPORT_PCLKM
CLK_BLK_HSI0_UID_RSTNSYNC_CLK_HSI0_EUSB_IPCLKPORT_CLK
The vendor kernel specifies 4 regulators, 2 of which are for eUSB
and the other 2 for the repeater. The rest of the PHYs and the dwc3
controller are on a single power domain (hsi0), so they're most likely
sharing power rails.
As Qualcomm is also using the eUSB2 IP, the approach taken here is to
rename the driver so that it can be used by other SoC vendors as well
while keeping compatibles SoC-vendor prefixed (different vendors have
different implementations of the IP with different register maps),
add support for exynos2200 in it and implement support for exynos2200
in the existing exynos5-usbdrd driver (with link controller init).
A new USBDP driver will be added later on, so that super-speed can be
configured.
Bindings have been tested:
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4 dt_binding_check DT_SCHEMA_FILES="Documentation/devicetree/bindings/phy/samsung,snps-eusb2-phy.yaml"
SCHEMA Documentation/devicetree/bindings/processed-schema.json
Documentation/devicetree/bindings/iio/light/brcm,apds9160.yaml: ps-cancellation-current-picoamp: missing type definition
CHKDT ./Documentation/devicetree/bindings
LINT ./Documentation/devicetree/bindings
DTEX Documentation/devicetree/bindings/phy/samsung,snps-eusb2-phy.example.dts
DTC [C] Documentation/devicetree/bindings/phy/samsung,snps-eusb2-phy.example.dtb
Best regards,
Ivaylo
Changes in v4:
EUSB2 changes:
- make a new separate binding for eusb2 ip found in samsung socs
- fix order of tags in 03/10
- change 'SNPS' to 'Synopsys' in the MODULE_DESCRIPTION in 04/10
- simplify code around device_get_match_data in 05/10
USBDRD changes:
- drop double colons and 'phandle to' in binding
Changes in v3:
USBCON changes:
- drop the driver and introduce it all in existing exynos5-usbdrd driver
EUSB2 changes:
- split changes into multiple commits with clear diff
- add a commit to do table-based lookup for refclk
- clean up here and there
- correct the cover letter according to my new knowledge of how the
hardware functions
- change commit message of the optional repeater patch
Changes in v2:
USBCON changes:
- drop unused header includes
- sanitize the binding
- proper init and exit power management
- shorten some variables
- unrelax reads and writes
- update commit description
- remodel to take other phys
- drop specified regulators as these are for the repeater
- make the kconfig description better
- general cleanup
EUSB2 changes:
- merge the previous separate driver into the qualcomm one
- drop the previous model of taking usbcon phandle
Ivaylo Ivanov (10):
dt-bindings: phy: add exynos2200 eusb2 phy support
dt-bindings: phy: samsung,usb3-drd-phy: add exynos2200 support
phy: move phy-qcom-snps-eusb2 out of its vendor sub-directory
phy: phy-snps-eusb2: refactor constructs names
phy: phy-snps-eusb2: split phy init code
phy: phy-snps-eusb2: make repeater optional
phy: phy-snps-eusb2: make reset control optional
phy: phy-snps-eusb2: refactor reference clock init
phy: phy-snps-eusb2: add support for exynos2200
phy: exynos5-usbdrd: support Exynos USBDRD 3.2 4nm controller
.../bindings/phy/samsung,snps-eusb2-phy.yaml | 79 +++
.../bindings/phy/samsung,usb3-drd-phy.yaml | 38 +-
drivers/phy/Kconfig | 8 +
drivers/phy/Makefile | 1 +
drivers/phy/phy-snps-eusb2.c | 627 ++++++++++++++++++
drivers/phy/qualcomm/Kconfig | 9 -
drivers/phy/qualcomm/Makefile | 1 -
drivers/phy/qualcomm/phy-qcom-snps-eusb2.c | 442 ------------
drivers/phy/samsung/phy-exynos5-usbdrd.c | 227 ++++++-
include/linux/soc/samsung/exynos-regs-pmu.h | 3 +
10 files changed, 964 insertions(+), 471 deletions(-)
create mode 100644 Documentation/devicetree/bindings/phy/samsung,snps-eusb2-phy.yaml
create mode 100644 drivers/phy/phy-snps-eusb2.c
delete mode 100644 drivers/phy/qualcomm/phy-qcom-snps-eusb2.c
--
2.43.0
next reply other threads:[~2025-04-12 20:26 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-12 20:26 Ivaylo Ivanov [this message]
2025-04-12 20:26 ` [PATCH v4 01/10] dt-bindings: phy: add exynos2200 eusb2 phy support Ivaylo Ivanov
2025-04-14 7:17 ` Krzysztof Kozlowski
2025-04-12 20:26 ` [PATCH v4 02/10] dt-bindings: phy: samsung,usb3-drd-phy: add exynos2200 support Ivaylo Ivanov
2025-04-14 7:19 ` Krzysztof Kozlowski
2025-04-12 20:26 ` [PATCH v4 03/10] phy: move phy-qcom-snps-eusb2 out of its vendor sub-directory Ivaylo Ivanov
2025-04-12 20:26 ` [PATCH v4 04/10] phy: phy-snps-eusb2: refactor constructs names Ivaylo Ivanov
2025-04-12 20:26 ` [PATCH v4 05/10] phy: phy-snps-eusb2: split phy init code Ivaylo Ivanov
2025-04-12 20:26 ` [PATCH v4 06/10] phy: phy-snps-eusb2: make repeater optional Ivaylo Ivanov
2025-04-12 20:26 ` [PATCH v4 07/10] phy: phy-snps-eusb2: make reset control optional Ivaylo Ivanov
2025-04-12 20:26 ` [PATCH v4 08/10] phy: phy-snps-eusb2: refactor reference clock init Ivaylo Ivanov
2025-04-12 20:26 ` [PATCH v4 09/10] phy: phy-snps-eusb2: add support for exynos2200 Ivaylo Ivanov
2025-04-12 20:26 ` [PATCH v4 10/10] phy: exynos5-usbdrd: support Exynos USBDRD 3.2 4nm controller Ivaylo Ivanov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250412202620.738150-1-ivo.ivanov.ivanov1@gmail.com \
--to=ivo.ivanov.ivanov1@gmail.com \
--cc=alim.akhtar@samsung.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=kishon@kernel.org \
--cc=krzk@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).