[PATCH v1 0/6] Add support for Infineon/Intel XMM6260 modem
Svyatoslav Ryhel
clamor95 at gmail.com
Mon May 11 06:56:55 PDT 2026
The Infineon/Intel XMM6260 is a 3G-focused, slim modem platform designed
for smartphones, data cards, and Machine-to-Machine (M2M) applications.
The modem is typically connected via the application processor's USB line
in HSIC mode. To function correctly, the modem must control this line, as
it requires precise timing to initiate or de-initialize the USB connection.
This control is necessary to successfully enumerate the next stage of the
USB device loader (moving from firmware loading to the actual device
interface for example).
Patches 1 and 2 adjust the Tegra-specific portion of the Chipidea USB
controller to allow for the disabling of automatic PHY and USB controller
registration. This is achieved by adding the nvidia,external-control
property/flag. It does not affect any existing configurations, but it
allows the USB line to be registered or deregistered by an external
device — in this case, the modem.
Patches 3 and 4 add support for the generic portion of the
Infineon XMM6260 baseband modem, which was used in many Tegra-, OMAP-,
and Exynos-based devices circa 2012. This driver provides power sequences,
manages initial communication with the application processor, handles the
SoC-specific modem PHY, and verifies that the modem USB device appears
correctly.
Patches 5 and 6 implement support for the Tegra-specific modem physical
layer, which handles the registration and unregistration of the USB
controller.
While current support is relatively basic, this configuration already
allows the modem device to appear in the dmesg of my device
(LG Optimus Vu (P895)):
[ 9.427014] ci_hdrc ci_hdrc.1: EHCI Host Controller
[ 9.431488] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1
[ 9.457197] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
[ 9.460370] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.16
[ 9.468470] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 9.475597] usb usb1: Product: EHCI Host Controller
[ 9.480508] usb usb1: Manufacturer: Linux 6.16.0+ ehci_hcd
[ 9.485913] usb usb1: SerialNumber: ci_hdrc.1
[ 9.490862] hub 1-0:1.0: USB hub found
[ 9.494005] hub 1-0:1.0: 1 port detected
[ 9.657191] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[ 9.844726] usb 1-1: New USB device found, idVendor=1519, idProduct=0020, bcdDevice=12.74
[ 9.850530] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 9.857594] usb 1-1: Product: HSIC Device
[ 9.861606] usb 1-1: Manufacturer: Comneon
[ 9.865627] usb 1-1: SerialNumber: 0123456789
[ 9.908739] cdc_acm 1-1:1.0: ttyACM0: USB ACM device
Svyatoslav Ryhel (6):
dt-bindings: usb: ci-hdrc-usb2: Document nvidia,external-control
property
usb: chipidea: tegra: Avoid controller/PHY init if bus is externally
controlled
dt-bindings: net: Document Infineon/Intel XMM6260 modem
net: usb: Add Infineon XMM6260 Baseband modem support
dt-bindings: phy: tegra: Document Nvidia Tegra XMM6260 PHY
phy: tegra: Add support for Nvidia Tegra XMM6260 PHY
.../bindings/net/infineon,xmm6260.yaml | 72 ++++
.../bindings/phy/nvidia,tegra-xmm6260.yaml | 58 +++
.../devicetree/bindings/usb/ci-hdrc-usb2.yaml | 7 +
drivers/net/usb/Kconfig | 15 +
drivers/net/usb/Makefile | 1 +
drivers/net/usb/baseband-xmm6260.c | 335 ++++++++++++++++++
drivers/phy/tegra/Kconfig | 12 +
drivers/phy/tegra/Makefile | 1 +
drivers/phy/tegra/phy-tegra-xmm6260.c | 144 ++++++++
drivers/usb/chipidea/ci_hdrc_tegra.c | 36 +-
10 files changed, 667 insertions(+), 14 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/infineon,xmm6260.yaml
create mode 100644 Documentation/devicetree/bindings/phy/nvidia,tegra-xmm6260.yaml
create mode 100644 drivers/net/usb/baseband-xmm6260.c
create mode 100644 drivers/phy/tegra/phy-tegra-xmm6260.c
--
2.51.0
More information about the linux-phy
mailing list