Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save Entrpi/7ae515212a480aeec56093855cfee8e2 to your computer and use it in GitHub Desktop.

Select an option

Save Entrpi/7ae515212a480aeec56093855cfee8e2 to your computer and use it in GitHub Desktop.

CIX Sky1 Mainline Kernel Porting - Complete Report

Date: 2025-12-10 Base Kernel: Linux 6.18 (7d0a66e4bb90) Board: Radxa Orion O6 Total Commits: 52


Summary by Subsystem

Subsystem Commits Status
Device Tree 12 ✅ Complete
PCIe 10 ✅ Complete
Display (DRM) 2 ✅ Complete
USB / Type-C 5 ✅ Complete
Audio / ASoC 8 ✅ Complete
DMA-350 6 ✅ Complete
DSP / Remoteproc 8 ✅ Complete
GPU / Panthor 4 ⚠️ In Progress
System (hwspinlock, nvmem, socinfo) 4 ✅ Complete
IRQ / PDC 2 ✅ Complete
Documentation 3 ✅ Complete

1. Device Tree (12 commits)

Initial SoC/Board Support

Commit Description
b5d931a3d0d0 arm64: dts: cix: Add CIX Sky1 SoC and Radxa Orion O6 device tree - Full SoC description with all peripherals, GIC interrupt cell fixes (3→4), binding headers
75fd506156ab arm64: dts: cix: Fix mailbox addresses and enable both SCMI transports - Corrected mbox addresses, enable both SMC and mailbox SCMI

PCIe Device Tree

Commit Description
7d40c75903d7 arm64: dts: cix: Enable 5GBE PCIe controllers on Orion O6 - Enable RTL8126 5GbE ports
b7e8e34322a4 arm64: dts: cix: Restore IO ranges and enable x16 slot on Orion O6 - Remove pci=realloc workaround, enable x16 slot

USB Device Tree

Commit Description
65453acf76ec arm64: dts: cix: Fix USB controller interrupt cell count - Fix 3→4 cell GIC interrupt format
1915c0b1d207 arm64: dts: cix: Re-enable USB3 PHYs disabled during debug
1e4565e3d845 arm64: dts: cix: Enable USBDP PHYs for display output on Orion O6 - Configure DP Alt mode PHYs

GPU Device Tree

Commit Description
11813507bb4a arm64: dts: cix: Update GPU node for Panthor driver - Change compatible to cix,sky1-mali, add RCSU region

Misc Device Tree

Commit Description
fa1a89a54d3c arm64: dts: cix: Enable 32-bit SCMI shmem I/O for Sky1

2. PCIe Subsystem (10 commits)

Core Sky1 PCIe Driver

Commit Description
4a3aadd4150d pci: cadence: sky1: Fix capability finder API mismatch with mainline - Local helper functions for vendor API
65f00beb25f8 pci: cadence: sky1: Fix ATU/ECAM register layout for CIX Sky1 SoC - ATU base 0xa000, stride 0x80, DESC bits, SBSA ECAM mode
f6bfff52b53e pci: cadence: sky1: Enable WiFi PCIe controller (pcie_x2_rc)
73d46cd021b1 pci: cadence: sky1: Use vendor-style PCI resource assignment - Custom sky1_pci_host_probe() using simpler vendor path
e9d875c9d6b9 pci: cadence: sky1: Fail probe gracefully when PCIe link is down - Handle empty slots

Cadence PCIe Core Changes

Commit Description
2f6f830c538b pci: cadence: Add MSG region support for ATU layout - Region 1 for PCIe messaging

PCI Quirks

Commit Description
1242d7a4e39e PCI: Add quirk to disable MSI for CIX CD8180 PCIe root ports - Root port MSI-X BAR bug workaround

Result: All 5 PCIe controllers working (NVMe, WiFi, 2x 5GbE, x16 slot), MSI/MSI-X via ITS, no boot parameters needed.


3. Display / DRM (2 commits)

Commit Description
4d72f735c7b2 drm: cix: Add CIX Sky1 display drivers (linlon-dp, trilin-dpsub) - DPU + DP TX drivers ported from vendor 6.6, API changes: DRM_FBDEV_DMA_DRIVER_OPS, fb_create 4th param, timer_container_of()
66f8cc5ba556 docs: Add CIX Sky1 driver porting documentation

Components:

  • linlon-dp.ko - Linlon Display Processing Unit
  • trilin-dpsub.ko - Trilinear DP TX subsystem
  • cix_virtual.ko - Virtual display connector

Result: HDMI output working at 1920x1280@60Hz via DP-to-HDMI.


4. USB / Type-C (5 commits)

CDNSP Platform Driver

Commit Description
68675c6430ed usb: cdns3: Add CDNSP platform driver for Cadence USBSSP controllers - New cdnsp-plat.c for dual-role USB, PHY setup, role management

RTS5453 Type-C PD Controller

Commit Description
9ab5c6e2d91c usb: typec: Add Realtek RTS5453 USB PD controller driver - I2C driver for PD negotiation, role switching, DP Alt mode, HPD handling

Documentation

Commit Description
e81b407a9ad7 docs: Add USB Type-C and CDNSP driver documentation

Result: All 10 USB ports working, Type-C with OTG and role switching, DP Alt mode support.


5. Audio / ASoC (8 commits)

Audio Subsystem Core

Commit Description
c1fb6d689d0e dma/clk/reset/sound: Add CIX Sky1 audio subsystem support - AUDSS clock controller (41 clocks), AUDSS reset controller (16 resets), Cadence I2S drivers (mc/sc), Sky1 ASoC machine driver
81fba0226856 ASoC: cix: card-utils: Default clock provider when not specified in DT - Fix EINVAL from set_fmt()

HDA Controller

Commit Description
18e2ba072369 sound: hda: Add CIX Sky1 IPBLOQ HDA controller driver - Realtek ALC256 for 3.5mm jack, polling mode (RIRBSTS bug), board init verbs

Audio DMA (DMA-350)

Commit Description
122e471d95ee dma: arm-dma350: implement cyclic DMA for audio streaming - Hardware command linking, peripheral flow control
4bf44e0a82ee dma: arm-dma350: Fix address translation and add reserved memory support - DMA-350 memory view translation (reg 0x20000000+, RAM 0x30000000+)
5a56e9e9469c dma: arm-dma350: Fix interrupt handling for cyclic DMA - Global INTREN, AUDSS CRU IRQ routing
cc2cdfb395e7 dma: arm-dma350: Fix IRQ clearing and use minimal cyclic command format - STAT write-1-to-clear, vendor command format
4c946e5a1800 dma: arm-dma350: Fix audio pops by disabling register INTREN for cyclic DMA

Result: HDMI audio working, HDA 3.5mm jack working, no audio pops.


6. DSP / Remoteproc (8 commits)

DSP Remoteproc Driver

Commit Description
7a07a9103fbc Enable Cix Audio DSP and Mailbox - Port cix_dsp_rproc driver
5e166d1f0971 remoteproc: cix_dsp_rproc: Fix build for mainline 6.18 - syscon API, void remove()
94670347cc8d Fix Cix DSP memory mapping - Map vdev0buffer and vrings in addr_init
807550b276cb Fix Cix DSP reserved memory DA - Identity map 0xce000000 for vrings

DSP DMA-BUF Heap

Commit Description
b685724efec5 dma-buf: heaps: Add DSP heap driver for CIX Sky1 - /dev/dma_heap/dsp for DSP shared memory

RPMSG for DSP Communication

Commit Description
278f808c8c64 rpmsg: char: Add Cix DSP audio services - audio-decoder/encoder in id_table
29bac155ce45 rpmsg: virtio: Fix DMA address translation for remoteproc DSP - sg_dma_address with correct DA
6d2b348e4474 rpmsg: Add rpmsg-lite RX avail ring support for CIX DSP - rpmsg-lite avail ring receive path
af7f6d12f8a1 rpmsg: virtio: Add CIX DSP quirk for bidirectional TX vring - rpmsg-lite in-place response handling
721ca17761b8 WIP: rpmsg: Add deferred vq0 kick and debug prints for DSP link-up

Result: DSP boots and runs (/sys/class/remoteproc/remoteproc0/state = running), rpmsg services available.


7. GPU / Panthor (4 commits)

Commit Description
b3268378e7f3 drm/panthor: Add Sky1 platform-specific initialization - Reset control, RCSU mapping, PHBA config, LS_MEM counter workaround, PWR_OVERRIDE1
d971bb1124ec drm/panthor: Sky1 G720 support with debug instrumentation - HOST_POWER regs, legacy SHADER_PWRON, poweroff_timer=0, G720 CSF changes
87744a10d059 drm/panthor: Remove debug instrumentation for Sky1 GPU - Clean up verbose logging
85f815f0a83f drm/panthor: Remove Sky1 legacy shader power paths

Status: EGL context works (test_panthor passes), job execution times out. See docs/csf-interface-comparison.md for analysis.


8. System Infrastructure (4 commits)

Hardware Spinlock

Commit Description
97730263cf1e hwspinlock: Add Sky1 hardware spinlock driver - 100 locks for IPC synchronization
22ab4dc4878d hwspinlock: sky1: Add debugfs status interface

NVMEM

Commit Description
25a8e2e55631 nvmem: Add CIX Sky1 eFuse driver - eFuse access via firmware

SoC Info

Commit Description
bac67f39f122 soc: cix: Add Sky1 SoC information driver - Board ID (PHECDA Rev A), firmware versions

9. IRQ / PDC (2 commits)

Commit Description
c82928ac8d12 Enable Cix Sky1 PDC, Thermal, and Device Tree nodes - Power Domain Controller IRQ chip
b227ae239084 irqchip/pdc: Make PDC opt-in via explicit interrupt-parent

10. Documentation (3 commits)

Commit Description
66f8cc5ba556 docs: Add CIX Sky1 driver porting documentation
e81b407a9ad7 docs: Add USB Type-C and CDNSP driver documentation
2fc5c8bd9c9c docs: Update TODO with Panthor GPU job timeout investigation

Files Added/Modified Summary

New Drivers (from vendor/DKMS)

Location Driver Source
drivers/pci/controller/cadence/pci-sky1.c PCIe Host Vendor 6.6
drivers/usb/cdns3/cdnsp-plat.c USB Platform New (mainline-style)
drivers/usb/typec/rts5453.c USB-PD Controller Vendor 6.6
drivers/gpu/drm/cix/linlon-dp/ DPU Vendor 6.6
drivers/gpu/drm/cix/dptx/ DP TX Vendor 6.6
drivers/clk/cix/clk-sky1-audss.c AUDSS Clocks Vendor 6.6
drivers/reset/reset-sky1-audss.c AUDSS Resets Vendor 6.6
drivers/remoteproc/cix_dsp_rproc.c DSP Remoteproc Vendor 6.6
drivers/dma-buf/heaps/dsp_heap.c DSP Heap Vendor 6.6
drivers/hwspinlock/sky1_hwspinlock.c Hwspinlock Vendor 6.6
drivers/nvmem/sky1-nvmem.c eFuse NVMEM Vendor 6.6
drivers/soc/cix/sky1-socinfo.c SoC Info Vendor 6.6
drivers/irqchip/irq-sky1-pdc.c PDC IRQ Vendor 6.6
sound/pci/hda/hda_ipbloq.c HDA Controller Vendor 6.6
sound/soc/cix/ ASoC Platform Vendor 6.6

Modified Mainline Drivers

Location Change
drivers/dma/arm-dma350.c Cyclic DMA, address translation, AUDSS IRQ routing
drivers/gpu/drm/panthor/ Sky1/G720 support, HOST_POWER, legacy power paths
drivers/pci/controller/cadence/pcie-cadence*.c MSG region, Sky1 ATU layout
drivers/pci/quirks.c CIX CD8180 MSI disable quirk
drivers/rpmsg/virtio_rpmsg_bus.c rpmsg-lite avail ring, DMA address fix
drivers/remoteproc/remoteproc_virtio.c Don't zero vrings for rpmsg-lite

Boot Parameters

Current (none needed):

console=ttyAMA2,115200 earlycon=pl011,0x040d0000 clk_ignore_unused

Previously Required (now removed):

  • pci=nomsi - Fixed by MSI quirk
  • pci=realloc - Fixed by vendor-style resource assignment

What's Working

Feature Status
Boot ✅ Clean boot, no workarounds
PCIe ✅ All 5 controllers, MSI/MSI-X via ITS
NVMe ✅ Boot drive working
WiFi ✅ RTL8852BE working
Ethernet ✅ Both RTL8126 5GbE ports
USB ✅ All 10 ports, Type-C OTG
Display ✅ HDMI 1920x1280@60Hz
Audio ✅ HDMI + 3.5mm jack
DSP ✅ Boots, rpmsg services
Thermal ✅ 5 zones via SCMI
GPIO ✅ All controllers
Watchdog ✅ Working

What's In Progress

Feature Status Blocker
GPU ⚠️ EGL works, jobs timeout shader_pwractive=0x0, MCU HOST_POWER issue
SOF Audio ⚠️ Drivers ported No firmware shipped

Commit Count by Area

Device Tree:        12 commits
PCIe:               10 commits
Audio/DMA:          14 commits (ASoC + DMA-350 + DSP)
USB:                 5 commits
Display:             2 commits
GPU:                 4 commits
System:              4 commits
IRQ:                 2 commits
Docs:                3 commits
Build Scripts:       1 commit
─────────────────────────────
Total:              52 commits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment