From: Hongliang Yang <hongliang.yang@cixtech.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Peter Chen <peter.chen@kernel.org>,
Pawel Laszczak <pawell@cadence.com>,
Roger Quadros <rogerq@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Philipp Zabel <p.zabel@pengutronix.de>,
Gary Yang <Gary.Yang@cixtech.com>,
Fugang Duan <fugang.duan@cixtech.com>
Cc: linux-usb@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
cix-kernel-upstream@cixtech.com, hongliang.yang@cixtech.com
Subject: [PATCH v7 0/2] Add CIX Sky1 USBSSP controller support
Date: Fri, 6 Nov 2026 18:12:08 +0800 [thread overview]
Message-ID: <20261106101210.1059256-1-hongliang.yang@cixtech.com> (raw)
This series adds support for the Cadence USBSSP DRD controller
integrated in the CIX Sky1 SoC: the device tree binding and the glue
driver. It is a USB series only. The arm64 device tree nodes belong to
the SoC subsystem, so they are not part of this series and will be sent
separately once the binding is accepted.
Tested on Radxa Orion O6 (Sky1) in host mode, together with the CIX
USB3 PHY series posted separately. The series applies on top of
v7.4-rc1.
Each controller is described as one address range in the USB30 Type-A
DRD RCSU block at 0x091c0000, starting at its AXI cache attribute strap
register and ending after its AXI clock status register. The two Type-A
controllers interleave their strap and status registers in that block,
so the two ranges overlap, and the range is mapped with devm_ioremap()
instead of devm_platform_ioremap_resource(): requesting the region would
make the second controller fail with -EBUSY. The register map of the
block is in the binding commit message.
Changes in v7:
- Describe the RCSU registers of each controller as one address range
starting at its AXI cache attribute register, instead of two 16-byte
register slots, and drop the reg-names property.
- Map that range with devm_ioremap(); request_mem_region() cannot be
used because the two Type-A controllers share the block and their
ranges overlap.
- Take the offset of the AXI clock status register from per-compatible
driver data (0xec on Type-A, 0xf0 on Type-C), instead of two
reg-names.
- Dropped #syscon-cells from the S5 system controller binding: the
property does not exist in the kernel, and the series no longer
touches bindings/soc/cix.
- Removed the arm64 dts from the series: it is a separate SoC patchset.
Changes in v6:
- Dropped the simple-bus RCSU container; each node is placed at the
address of its glue registers and the core is a child at its own
address.
- Replaced the usbN aliases and the undocumented id property with the
register offset and bit position arguments of cix,usb-syscon.
- Converted probe error paths to dev_err_probe().
- Removed the unused over-current GPIO handling and the unused dr_base
and cdnsp_pdev fields.
- Fixed the 125us prescaler value: time * frequency - 1.
- Made the AXI halt writes read-modify-write so the preserved and RW1C
bits of XEC_AXI_CAP keep their state.
Changes in v5:
- Dropped the cix,sky1-usbss-rcsu syscon binding and the cix,usb-rcsu
phandle; the glue registers are described in the controller node.
- Added the MAINTAINERS entry for the glue driver.
Changes in v4:
- Split the combined PHY/USBSSP series into two independent series.
- Restructured the RCSU registers as a shared syscon region with offsets
(reverted in v5).
- Fixed the indentation reported by checkpatch.
Changes in v3:
- Fixed the interrupt specifiers of the core nodes: the Sky1 GICv3 uses
four cells, so every entry needs the fourth (empty) cell.
- PHY driver: assert the resets before registering the PHY provider,
disable clocks in LIFO order, and fix the error unroll path so clocks
that were never enabled are not disabled.
Changes in v2:
- Split the single binding into a PHY binding and a USBSSP binding.
- clock-names: apb/ref for the PHY, sof/axi/lpm/apb for the controller.
- reset-names: core/apb instead of reset/preset.
- Dropped axi_bmax_value from DT; it is a driver constant.
- Added the MAINTAINERS entries.
Changes in v1: initial version.
Hongliang Yang (2):
dt-bindings: usb: Add CIX Sky1 USBSSP controller
usb: cdns3: Add CIX Sky1 glue driver
.../bindings/usb/cix,sky1-usbssp.yaml | 154 ++++
MAINTAINERS | 2 +
drivers/usb/cdns3/Kconfig | 13 +
drivers/usb/cdns3/Makefile | 1 +
drivers/usb/cdns3/cdnsp-sky1.c | 710 ++++++++++++++++++
drivers/usb/cdns3/cdnsp-sky1.h | 100 +++
6 files changed, 980 insertions(+)
create mode 100644 Documentation/devicetree/bindings/usb/cix,sky1-usbssp.yaml
create mode 100644 drivers/usb/cdns3/cdnsp-sky1.c
create mode 100644 drivers/usb/cdns3/cdnsp-sky1.h
--
2.54.0
next reply other threads:[~2026-11-06 10:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-06 10:12 Hongliang Yang [this message]
2026-11-06 10:12 ` [PATCH v7 1/2] dt-bindings: usb: Add CIX Sky1 USBSSP controller Hongliang Yang
2026-11-06 10:12 ` [PATCH v7 2/2] usb: cdns3: Add CIX Sky1 glue driver Hongliang Yang
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=20261106101210.1059256-1-hongliang.yang@cixtech.com \
--to=hongliang.yang@cixtech.com \
--cc=Gary.Yang@cixtech.com \
--cc=cix-kernel-upstream@cixtech.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=fugang.duan@cixtech.com \
--cc=gregkh@linuxfoundation.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=pawell@cadence.com \
--cc=peter.chen@kernel.org \
--cc=robh@kernel.org \
--cc=rogerq@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
all inboxes | Powered by JetHome®