Skip to content

spacemit: Add PCIe controller and combo-PHY support for K3#307

Open
EncrowThorne19 wants to merge 4 commits into
RVCK-Project:rvck-6.6from
EncrowThorne19:dev-pcie-k3
Open

spacemit: Add PCIe controller and combo-PHY support for K3#307
EncrowThorne19 wants to merge 4 commits into
RVCK-Project:rvck-6.6from
EncrowThorne19:dev-pcie-k3

Conversation

@EncrowThorne19

Copy link
Copy Markdown

问题描述

SpacemiT K3 的 PCIe 控制器(PortA)通过 K3 combo-PHY 连接板载
NVMe SSD,但当前 6.6.141(rvck)内核树中既没有 PCIe 控制器驱动,也没有
combo-PHY 驱动。导致 SSD 无法被枚举,也无法作为根文件系统启动。

相关驱动在上游(7.1-rc4)中已存在,但因框架 API 与行为差异,无法在 6.6.141 上
直接编译和工作,需要移植适配。

参考的上游 Patch
PCIe 控制器驱动Patch
PHY 驱动Patch

解决方案

从上游 7.1-rc4 移植并适配 PCIe 与 combo-PHY 支持,新增/修改以下文件:

PHY 驱动:

  • drivers/phy/spacemit/phy-k3-combphy.c、phy-k3-common.c、phy-k3-common.h:
    新增 K3 combo-PHY 驱动,为 PCIe 提供物理层。
  • drivers/phy/spacemit/Kconfig、Makefile 及 drivers/phy/Kconfig、Makefile:
    挂接编译。

PCIe 控制器驱动:

  • drivers/pci/controller/dwc/pcie-spacemit-k1.c:新增 SpacemiT K3 PCIe host
    控制器驱动,驱动 PortA 上的 NVMe SSD。
  • drivers/pci/controller/dwc/Kconfig、Makefile:新增配置并加入编译。

DTS:

  • arch/riscv/boot/dts/spacemit/k3.dtsi:新增 combo-PHY 与 PCIe host 节点。
  • arch/riscv/boot/dts/spacemit/k3-com260.dts:使能并配置 pinctrl。

验证方法

需开启以下内核配置:

  • CONFIG_PHY_SPACEMIT_K3_COMBO_PHY=y
  • CONFIG_PHY_SPACEMIT_K3_COMMON_OPS=y
  • CONFIG_PCIE_SPACEMIT_K1=y

验证结果

~ # uname -a
Linux HummingBird 6.6.141+ #4 SMP Thu Jun 11 20:18:40 CST 2026 riscv64 GNU/Linux

~ # lspci
00:00.0 Class 0604: Device 201f:0002 (rev 01)
01:00.0 Class 0108: Device 126f:2263 (rev 03)

~ # lspci -s 01:00.0 -v
01:00.0 Class 0108: Device 126f:2263 (rev 03) (prog-if 02)
Subsystem: Device 126f:2263
Flags: bus master, fast devsel, latency 0, IRQ 62
Memory at 1100200000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/8 Maskable+ 64bit+
Capabilities: [70] Express Endpoint, IntMsgNum 0
Capabilities: [b0] MSI-X: Enable- Count=16 Masked-
Capabilities: [100] Advanced Error Reporting
Capabilities: [158] Secondary PCI Express
Capabilities: [178] Latency Tolerance Reporting
Capabilities: [180] L1 PM Substates
Kernel driver in use: nvme

@github-actions

github-actions Bot commented Jun 14, 2026

Copy link
Copy Markdown

开始测试 log: https://github.com/RVCK-Project/rvck/actions/runs/27496248994

参数解析结果
args value
repository RVCK-Project/rvck
head ref pull/307/head
base ref rvck-6.6
LAVA repo RVCK-Project/lavaci
LAVA hardware ['qemu']
LAVA Testcase path lava-testcases/common-test/ltp/ltp.yaml
need run job kunit-test,kernel-build,check-patch,lava-trigger

测试完成

详细结果:
check result
kunit-test success
kernel-build success
check-patch failure
lava-trigger-qemu success
lava-trigger-sg2042 skipped
lava-trigger-k1 skipped
lava-trigger-lpi4a skipped

Kunit Test Result

[10:44:15] Testing complete. Ran 482 tests: passed: 466, skipped: 16

Kernel Build Result

Check Patch Result

Total Errors 21
Total Warnings 29

LAVA Check (qemu)

args value
testcase_repo RVCK-Project/lavaci
lava_template lava-job-template/qemu/qemu-ltp.yaml
testcase_path lava-testcases/common-test/ltp/ltp.yaml
kernel_download_url http://10.30.190.110/openEuler-RISC-V/RVCK/OERV-RVCI/RVCK-Project/rvck/307_27496248994_1/Image
initramfs_download_url http://10.30.190.110/openEuler-RISC-V/RVCK/OERV-RVCI/RVCK-Project/rvck/307_27496248994_1/initramfs.img
rootfs_download_url https://fast-mirror.isrc.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/RVCK/openEuler24.03-LTS-SP1/openeuler-rootfs.img.zst
testcase_ref main
testitem_name RVCK-Project_rvck_pull_request_target_307__common-test_qemu

result: Lava check done!

riscv inclusion
category: feature
bugzilla: RVCK-Project#306

--------------------------------

Backport the SpacemiT K3 combo-PHY driver from upstream 7.1-rc4 to 6.6.141,
providing the PHY lanes for the K3 PCIe controller.

Signed-off-by: EncrowThorne <jyc0019@gmail.com>
Signed-off-by: Yongchao Jia <yongchao.jia@spacemit.com>
Signed-off-by: Inochi Amaoto <inochiama@gmail.com>
riscv inclusion
category: feature
bugzilla: RVCK-Project#306

--------------------------------

Backport the SpacemiT K3 DesignWare-based PCIe host controller driver from
upstream 7.1-rc4 to 6.6.141. It drives the on-board NVMe SSD on PortA.

Signed-off-by: EncrowThorne <jyc0019@gmail.com>
Signed-off-by: Yongchao Jia <yongchao.jia@spacemit.com>
Signed-off-by: Inochi Amaoto <inochiama@gmail.com>
riscv inclusion
category: feature
bugzilla: RVCK-Project#306

--------------------------------

Add the comb-PHY and PCIe host nodes to the K3 dtsi and enable them on the
com260 board with the PortA pinctrl.

Signed-off-by: EncrowThorne <jyc0019@gmail.com>
Signed-off-by: Yongchao Jia <yongchao.jia@spacemit.com>
Signed-off-by: Inochi Amaoto <inochiama@gmail.com>
@github-actions

github-actions Bot commented Jun 14, 2026

Copy link
Copy Markdown

开始测试 log: https://github.com/RVCK-Project/rvck/actions/runs/27497362172

参数解析结果
args value
repository RVCK-Project/rvck
head ref pull/307/head
base ref rvck-6.6
LAVA repo RVCK-Project/lavaci
LAVA hardware ['qemu']
LAVA Testcase path lava-testcases/common-test/ltp/ltp.yaml
need run job kunit-test,kernel-build,check-patch,lava-trigger

测试完成

详细结果:
check result
kunit-test success
kernel-build success
check-patch success
lava-trigger-qemu success
lava-trigger-sg2042 skipped
lava-trigger-k1 skipped
lava-trigger-lpi4a skipped

Kunit Test Result

[11:31:46] Testing complete. Ran 482 tests: passed: 466, skipped: 16

Kernel Build Result

Check Patch Result

Total Errors 0
Total Warnings 13

LAVA Check (qemu)

args value
testcase_repo RVCK-Project/lavaci
lava_template lava-job-template/qemu/qemu-ltp.yaml
testcase_path lava-testcases/common-test/ltp/ltp.yaml
kernel_download_url http://10.30.190.110/openEuler-RISC-V/RVCK/OERV-RVCI/RVCK-Project/rvck/307_27497362172_1/Image
initramfs_download_url http://10.30.190.110/openEuler-RISC-V/RVCK/OERV-RVCI/RVCK-Project/rvck/307_27497362172_1/initramfs.img
rootfs_download_url https://fast-mirror.isrc.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/RVCK/openEuler24.03-LTS-SP1/openeuler-rootfs.img.zst
testcase_ref main
testitem_name RVCK-Project_rvck_pull_request_target_307__common-test_qemu

result: Lava check done!

riscv inclusion
category: config
bugzilla: RVCK-Project#306

--------------------------------

Enable CONFIG_PCIE_SPACEMIT_K1 in the default config so the SpacemiT K3
PCIe host controller is built in by default.

Signed-off-by: EncrowThorne <jyc0019@gmail.com>
Signed-off-by: Yongchao Jia <yongchao.jia@spacemit.com>
@github-actions

github-actions Bot commented Jun 15, 2026

Copy link
Copy Markdown

开始测试 log: https://github.com/RVCK-Project/rvck/actions/runs/27519533881

参数解析结果
args value
repository RVCK-Project/rvck
head ref pull/307/head
base ref rvck-6.6
LAVA repo RVCK-Project/lavaci
LAVA hardware ['qemu']
LAVA Testcase path lava-testcases/common-test/ltp/ltp.yaml
need run job kunit-test,kernel-build,check-patch,lava-trigger

测试完成

详细结果:
check result
kunit-test success
kernel-build success
check-patch success
lava-trigger-qemu success
lava-trigger-sg2042 skipped
lava-trigger-k1 skipped
lava-trigger-lpi4a skipped

Kunit Test Result

[02:01:54] Testing complete. Ran 482 tests: passed: 466, skipped: 16

Kernel Build Result

Check Patch Result

Total Errors 0
Total Warnings 14

LAVA Check (qemu)

args value
testcase_repo RVCK-Project/lavaci
lava_template lava-job-template/qemu/qemu-ltp.yaml
testcase_path lava-testcases/common-test/ltp/ltp.yaml
kernel_download_url http://10.30.190.110/openEuler-RISC-V/RVCK/OERV-RVCI/RVCK-Project/rvck/307_27519533881_1/Image
initramfs_download_url http://10.30.190.110/openEuler-RISC-V/RVCK/OERV-RVCI/RVCK-Project/rvck/307_27519533881_1/initramfs.img
rootfs_download_url https://fast-mirror.isrc.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/RVCK/openEuler24.03-LTS-SP1/openeuler-rootfs.img.zst
testcase_ref main
testitem_name RVCK-Project_rvck_pull_request_target_307__common-test_qemu

result: Lava check done!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant