CIX Sky1 Mainline Driver Porting Status
Date : 2025-12-10
Kernel : Mainline 6.18 (development)
Board : Radxa Orion O6
Category
Count
Status
Ported & Working
20
Complete
Skipped (Not Needed)
14
Intentional
SOF Stack
4
Ported (no firmware)
Note : SOF drivers are ported but SOF firmware was never shipped by CIX/Radxa. Current audio uses remoteproc path (dsp_fw.bin).
Driver
Config
Location
Commit
Purpose
PCIe Host
PCI_SKY1
pci/controller/cadence/pci-sky1.c
a0d9f2c08f45
PCIe root complex, MSI/MSI-X support
Pinctrl
PINCTRL_SKY1
pinctrl/cix/
b5d931a3d0d0
Pin multiplexing and GPIO
Reset
RESET_SKY1
reset/reset-sky1.c
b5d931a3d0d0
Reset controller
Reset AUDSS
RESET_SKY1_AUDSS
reset/reset-sky1-audss.c
c1fb6d689d0e
Audio subsystem reset
PWM
PWM_SKY1
pwm/pwm-sky1.c
b5d931a3d0d0
PWM controller
Watchdog
SKY1_WATCHDOG
watchdog/sky1_wdt.c
b5d931a3d0d0
Hardware watchdog
Mailbox
CIX_MBOX
mailbox/cix-mailbox.c
b5d931a3d0d0
Inter-processor communication
Hwspinlock
HWSPINLOCK_SKY1
hwspinlock/sky1_hwspinlock.c
97730263cf1e
Hardware spinlocks for IPC
NVMEM
NVMEM_SKY1
nvmem/sky1-nvmem.c
25a8e2e55631
eFuse access via firmware
SoCinfo
CIX_SKY1_SOCINFO
soc/cix/sky1-socinfo.c
bac67f39f122
SoC/board identification
Driver
Config
Location
Commit
Purpose
PCIe PHY
PHY_CIX_PCIE
phy/cix/phy-cix-pcie.c
b5d931a3d0d0
PCIe physical layer
USB2 PHY
PHY_CIX_USB2
phy/cix/phy-cix-usb2.c
b5d931a3d0d0
USB 2.0 physical layer
USB3 PHY
PHY_CIX_USB3
phy/cix/phy-cix-usb3.c
b5d931a3d0d0
USB 3.0 physical layer
USBDP PHY
PHY_CIX_USBDP
phy/cix/phy-cix-usbdp.c
b5d931a3d0d0
USB + DisplayPort combo PHY
Driver
Config
Location
Commit
Purpose
CDNSP Platform
USB_CDNSP_SKY1
usb/cdns3/cdnsp-sky1.c
68675c6430ed
USB controller glue
RTS5453 Type-C
TYPEC_RTS5453
usb/typec/rts5453.c
9ab5c6e2d91c
USB-PD controller
Driver
Config
Location
Commit
Purpose
Linlon DP
DRM_CIX
gpu/drm/cix/linlon-dp/
4d72f735c7b2
Display Processing Unit
Trilin DPTX
DRM_TRILIN_DP_CIX
gpu/drm/cix/dptx/
4d72f735c7b2
DisplayPort TX
Virtual Display
DRM_CIX_VIRTUAL
gpu/drm/cix/
4d72f735c7b2
Virtual connector
Driver
Config
Location
Commit
Purpose
HDA IPBloq
SND_HDA_CIX_IPBLOQ
sound/pci/hda/
18e2ba072369
HDA codec support
SOC Core
SND_SOC_CIX
sound/soc/cix/
c1fb6d689d0e
ASoC platform
DSP Remoteproc
CIX_DSP_RPROC
remoteproc/cix_dsp_rproc.c
5e166d1f0971
DSP remote processor
DSP IPC
CIX_DSP
firmware/cix/cix-dsp.c
-
SOF mailbox helper*
SOF Common
SND_SOC_SOF_CIX_COMMON
sound/soc/sof/cix/
-
SOF helpers*
SOF Sky1
SND_SOC_SOF_CIX_SKY1
sound/soc/sof/cix/
-
SOF platform*
*SOF drivers ported but require firmware (sof-sky1.ri) that was never shipped
Driver
Config
Location
Commit
Purpose
PDC
SKY1_PDC
irqchip/irq-sky1-pdc.c
c82928ac8d12
Power Domain Controller IRQ
What Ported Drivers Provide
PCIe : All 5 controllers working, MSI/MSI-X via ITS, NVMe/WiFi/Ethernet functional
USB : All 10 USB ports working, Type-C with OTG and role switching
Display : HDMI output at 1920x1280@60Hz via DPU + DP TX chain
Audio : HDA codec, I2S via ASoC (basic support)
Hwspinlock : Inter-processor synchronization (100 locks)
Mailbox : SCMI communication, DSP IPC
NVMEM : eFuse access for chip ID, calibration data
SoCinfo : Board identification (PHECDA Rev A), firmware versions
Reset/Clocks : Full power management support
# No workarounds needed!
console=ttyAMA2,115200 earlycon=pl011,0x040d0000 clk_ignore_unused
Skipped Drivers (Not Needed)
Redundant / Covered by Mainline
Driver
Config
Reason
Timer GPT
TIMER_SKY1_GPT
ARM arch timer is primary, GPT nodes disabled in DT
Bus Devfreq
ARM_CIX_BUS_DEVFREQ
Mainline SCMI perf domain provides same functionality
PMU Event
DEVFREQ_EVENT_CIX_PMU
Consumer (bus devfreq) not needed, stub functions
UART Clock
COMMON_CLK_CIX
Incomplete driver, clk_ignore_unused works
Thermal
CIX_THERMAL
5 thermal zones already work via SCMI
ACPI-Only (Using DT Boot)
Driver
Config
Reason
ACPI Power Domain
CIX_ACPI_POWER_DOMAIN
Not using ACPI boot
ACPI Clock
CIX_ACPI_CLK
Not using ACPI boot
SOC ACPI
CIX_SOC_ACPI
Not using ACPI boot
Vendor Debug Infrastructure
Driver
Config
Reason
Reboot Reason
SKY1_REBOOT_REASON
Coupled to vendor blackbox system
DST/Blackbox
CIX_DST
Vendor crash dump, not upstreamable
Clock Debug
CIX_CLK_DEBUG
Debug-only feature
Hardware Not Present / Laptop-Only
Driver
Config
Reason
EC
CIX_EC
Embedded Controller - laptop hardware
Sensorhub
CIX_SENSORHUB
Sensor fusion hub - laptop/tablet
E-Shutter
CIX_SKY1_E_SHUTTER
Electronic shutter - camera
Driver
Config
Reason
Vendor Hooks
CIX_VENDOR_HOOKS
Android GKI scheduler hooks
Driver
Config
Reason
Hardware RNG
HW_RANDOM_SKY1
DT node disabled, has debug printks
DSP / Sound Open Firmware Stack
Two Audio Paths (Mutually Exclusive)
The Sky1 HiFi5 DSP supports two different audio stacks:
Path
DT Compatible
Driver
Firmware
Status
Remoteproc
cix,sky1-hifi5
cix_dsp_rproc.ko
dsp_fw.bin
✅ Working
SOF
cix,sky1-dsp
sof-audio-of-sky1.ko
sof-sky1.ri
⚠️ No firmware
Current DT uses : Remoteproc path (cix,sky1-hifi5)
Driver
Config
Location
Status
DSP IPC Helper
CIX_DSP
drivers/firmware/cix/cix-dsp.c
✅ Ported
SOF Common
SND_SOC_SOF_CIX_COMMON
sound/soc/sof/cix/cix-common.c
✅ Ported
SOF Sky1
SND_SOC_SOF_CIX_SKY1
sound/soc/sof/cix/cix-sky1.c
✅ Ported
Header
-
include/linux/firmware/cix/dsp.h
✅ Ported
┌─────────────────────────────────────┐
│ SND_SOC_SOF_CIX_SKY1 │ Audio effects, mixing
│ (sound/soc/sof/cix/) │ codec configuration
└──────────────┬──────────────────────┘
│ depends on
┌──────────────▼──────────────────────┐
│ CIX_DSP │ IPC abstraction
│ (drivers/firmware/cix/cix-dsp.c) │ for mailbox
└──────────────┬──────────────────────┘
│ uses
┌──────────────▼──────────────────────┐
│ CIX_DSP_RPROC │ ✅ Working
│ (drivers/remoteproc/) │ Loads dsp_fw.bin
└──────────────┬──────────────────────┘
│ uses
┌──────────────▼──────────────────────┐
│ CIX_MBOX │ ✅ Working
│ (drivers/mailbox/) │ Inter-processor comm
└─────────────────────────────────────┘
Current DSP Status (Remoteproc Path)
$ cat /sys/class/remoteproc/remoteproc0/state
running
$ cat /sys/class/remoteproc/remoteproc0/name
cix-dsp-rproc
The DSP boots and runs via remoteproc. Basic audio works through ASoC platform driver.
SOF firmware does not exist and was never shipped by CIX/Radxa:
File
Purpose
Status
dsp_fw.bin
Remoteproc firmware
✅ Present
sof-sky1.ri
SOF runtime image
❌ Not shipped
sof-sky1-*.tplg
Audio topology
❌ Not shipped
Building SOF firmware would require:
Sound Open Firmware source code
Xtensa/HiFi5 DSP toolchain
Platform-specific port for Sky1 DSP
What SOF Would Enable (If Firmware Existed)
DSP-based audio effects (EQ, DRC, etc.)
Low-latency audio processing
Codec configuration via topology files
Power-efficient audio offload
The SOF drivers are ported and ready , but without firmware they cannot be used. The current working audio path is remoteproc-based (cix,sky1-hifi5 → cix_dsp_rproc) which provides basic audio functionality without DSP effects.
GPU Status (Separate Effort)
The Mali G720 GPU uses mainline Panthor driver (not vendor kbase):
Component
Status
Notes
Panthor driver
In progress
EGL context works, job execution times out
Mesa 25.3.0
Built
OpenGL ES 3.1 queries work
Firmware
Working
CSF v3.13.0 boots
See docs/csf-interface-comparison.md and docs/sky1-gpu-power-state-model.md for GPU debugging details.
Source: /home/radxa/mainline-linux/
Config: arch/arm64/configs/defconfig + fragments
Vendor Kernel (Reference)
Source: /home/radxa/radxa-kernel-6.6/
Config: arch/arm64/configs/cix.config
This file: ~/docs/sky1-driver-porting-status.md
Debug log: ~/docs/sky1-panthor-debug-log.md
Vendor analysis: ~/docs/cix-vendor-driver-analysis.md
Port DSP/SOF drivers ✅ Complete
include/linux/firmware/cix/dsp.h ✅
drivers/firmware/cix/cix-dsp.c ✅
sound/soc/sof/cix/cix-common.c ✅
sound/soc/sof/cix/cix-sky1.c ✅
SOF Audio - Blocked on firmware
SOF firmware (sof-sky1.ri, *.tplg) was never shipped
Would require building from SOF source with HiFi5 toolchain
Current audio works via remoteproc path (dsp_fw.bin)
Continue GPU debugging
Resolve shader power activation issue
Get actual rendering working
Appendix: Full Config Comparison
Enabled in Mainline (CIX/SKY1)
CONFIG_ARCH_CIX=y
CONFIG_CIX_CPU_IPA=y
CONFIG_CIX_DSP_RPROC=m
CONFIG_CIX_MBOX=y
CONFIG_CIX_SKY1_SOCINFO=y
CONFIG_CLK_SKY1_AUDSS=y
CONFIG_DRM_CIX_EDP_PANEL=m
CONFIG_DRM_CIX=m
CONFIG_DRM_CIX_VIRTUAL=m
CONFIG_DRM_TRILIN_DP_CIX=m
CONFIG_HWSPINLOCK_SKY1=y
CONFIG_NVMEM_SKY1=y
CONFIG_PCI_SKY1=y
CONFIG_PHY_CIX_PCIE=y
CONFIG_PHY_CIX_USB2=y
CONFIG_PHY_CIX_USB3=y
CONFIG_PHY_CIX_USBDP=y
CONFIG_PINCTRL_SKY1_BASE=y
CONFIG_PINCTRL_SKY1=y
CONFIG_PWM_SKY1=y
CONFIG_RESET_SKY1_AUDSS=y
CONFIG_RESET_SKY1=y
CONFIG_SKY1_PDC=y
CONFIG_SKY1_WATCHDOG=y
CONFIG_SND_HDA_CIX_IPBLOQ=m
CONFIG_SND_SOC_CIX=m
CONFIG_SND_SOC_SKY1_SOUND_CARD=m
CONFIG_USB_CDNSP_SKY1=y
In Vendor But Not Mainline (Intentionally Skipped)
CONFIG_ARM_CIX_BUS_DEVFREQ=y # Redundant
CONFIG_CIX_ACPI_CLK=y # ACPI-only
CONFIG_CIX_ACPI_POWER_DOMAIN=y # ACPI-only
CONFIG_CIX_AP2SE_IPC=y # SE IPC
CONFIG_CIX_CLK_DEBUG=y # Debug
CONFIG_CIX_CPU_INSTPIPE_FRESH=y # Vendor optimization
CONFIG_CIX_DSP=m # Ported
CONFIG_CIX_DST=y # Vendor debug
CONFIG_CIX_EC=y # Laptop
CONFIG_CIX_SE_CONFIG=y # SE config
CONFIG_CIX_SENSORHUB=y # Laptop
CONFIG_CIX_SOC_ACPI=y # ACPI-only
CONFIG_CIX_THERMAL=y # SCMI works
CONFIG_CIX_VENDOR_HOOKS=y # Android
CONFIG_COMMON_CLK_CIX=y # Incomplete
CONFIG_DEVFREQ_EVENT_CIX_PMU=y # Redundant
CONFIG_SKY1_REBOOT_REASON=y # Vendor debug
CONFIG_SND_SOC_SOF_CIX_SKY1=m # Ported
CONFIG_TIMER_SKY1_GPT=y # Redundant