[PATCH v2 0/9] Apple M1 NVMe storage support
Mark Kettenis
kettenis at openbsd.org
Sat Jan 22 20:38:10 CET 2022
This adds support for the (rather quirky) NVMe storage controller
integrated on Apple SoCs. This makes it possible to boot from the
NVMe storage that is present on all the M1 machines that Apple has
released so far.
The series has been designed to have as little impact on the existing
NVMe support as possible. It splits out the PCIe-specific bits in its
own file/driver and adds a platform driver for the Apple controller.
This platform driver handles all the quirkiness through driver ops.
The existing logic is retained when the driver ops aren't set. I've
tested this on a firefly-rk3399 board with:
nvme0 at pci1 dev 0 function 0 "Silicon Motion SM2260 NVMe" rev 0x03: msix, NVMe 1.2
nvme0: ADATA SX8000NP, firmware C2.2.1, serial 2H1220011170
(for those not familliar with OpenBSD, that's an ADATA SX8000NP NVMe
M.2 SSD with a Silicon Motion controller)
ChangeLog:
v2: - Add various comments
- Change SYS_SOC from "m1" to "apple"
- Change include paths to take advantage of SYS_SOC change
- Change alloc_queue op into setup_queue
Mark Kettenis (9):
nvme: Split out PCI support
mailbox: apple: Add driver for Apple IOP mailbox
arm: apple: Change SoC name from "m1" into "apple"
arm: apple: Add RTKit support
nvme: Introduce driver ops
nvme: Add shutdown function
power: domain: apple: Add reset support
nvme: apple: Add driver for Apple NVMe storage controller
configs: apple: Add NVMe boot target
arch/arm/Kconfig | 2 +
arch/arm/include/asm/arch-apple/rtkit.h | 11 +
.../asm/{arch-m1 => arch-apple}/uart.h | 0
arch/arm/mach-apple/Kconfig | 2 +-
arch/arm/mach-apple/Makefile | 1 +
arch/arm/mach-apple/rtkit.c | 231 +++++++++++++++++
configs/apple_m1_defconfig | 1 +
configs/clearfog_gt_8k_defconfig | 2 +-
configs/firefly-rk3399_defconfig | 2 +-
configs/khadas-vim3_android_ab_defconfig | 2 +-
configs/khadas-vim3_android_defconfig | 2 +-
configs/khadas-vim3_defconfig | 2 +-
configs/khadas-vim3l_android_ab_defconfig | 2 +-
configs/khadas-vim3l_android_defconfig | 2 +-
configs/khadas-vim3l_defconfig | 2 +-
configs/kontron_sl28_defconfig | 2 +-
configs/ls1012afrdm_qspi_defconfig | 2 +-
configs/ls1012afrdm_tfa_defconfig | 2 +-
.../ls1012afrwy_qspi_SECURE_BOOT_defconfig | 2 +-
configs/ls1012afrwy_qspi_defconfig | 2 +-
configs/ls1012afrwy_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls1012afrwy_tfa_defconfig | 2 +-
configs/ls1012aqds_qspi_defconfig | 2 +-
configs/ls1012aqds_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls1012aqds_tfa_defconfig | 2 +-
configs/ls1012ardb_qspi_SECURE_BOOT_defconfig | 2 +-
configs/ls1012ardb_qspi_defconfig | 2 +-
configs/ls1012ardb_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls1012ardb_tfa_defconfig | 2 +-
configs/ls1021aiot_qspi_defconfig | 2 +-
configs/ls1021aiot_sdcard_defconfig | 2 +-
configs/ls1021aqds_ddr4_nor_defconfig | 2 +-
configs/ls1021aqds_ddr4_nor_lpuart_defconfig | 2 +-
configs/ls1021aqds_nand_defconfig | 2 +-
configs/ls1021aqds_nor_SECURE_BOOT_defconfig | 2 +-
configs/ls1021aqds_nor_defconfig | 2 +-
configs/ls1021aqds_nor_lpuart_defconfig | 2 +-
configs/ls1021aqds_qspi_defconfig | 2 +-
configs/ls1021aqds_sdcard_ifc_defconfig | 2 +-
configs/ls1021aqds_sdcard_qspi_defconfig | 2 +-
configs/ls1021atsn_qspi_defconfig | 2 +-
configs/ls1021atsn_sdcard_defconfig | 2 +-
configs/ls1021atwr_nor_SECURE_BOOT_defconfig | 2 +-
configs/ls1021atwr_nor_defconfig | 2 +-
configs/ls1021atwr_nor_lpuart_defconfig | 2 +-
configs/ls1021atwr_qspi_defconfig | 2 +-
configs/ls1021atwr_sdcard_ifc_defconfig | 2 +-
configs/ls1021atwr_sdcard_qspi_defconfig | 2 +-
configs/ls1028aqds_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls1028aqds_tfa_defconfig | 2 +-
configs/ls1028aqds_tfa_lpuart_defconfig | 2 +-
configs/ls1028ardb_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls1028ardb_tfa_defconfig | 2 +-
configs/ls1043aqds_defconfig | 2 +-
configs/ls1043aqds_lpuart_defconfig | 2 +-
configs/ls1043aqds_nand_defconfig | 2 +-
configs/ls1043aqds_nor_ddr3_defconfig | 2 +-
configs/ls1043aqds_qspi_defconfig | 2 +-
configs/ls1043aqds_sdcard_ifc_defconfig | 2 +-
configs/ls1043aqds_sdcard_qspi_defconfig | 2 +-
configs/ls1043aqds_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls1043aqds_tfa_defconfig | 2 +-
configs/ls1043ardb_SECURE_BOOT_defconfig | 2 +-
configs/ls1043ardb_defconfig | 2 +-
configs/ls1043ardb_nand_SECURE_BOOT_defconfig | 2 +-
configs/ls1043ardb_nand_defconfig | 2 +-
configs/ls1043ardb_sdcard_defconfig | 2 +-
configs/ls1043ardb_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls1043ardb_tfa_defconfig | 2 +-
configs/ls1046afrwy_tfa_defconfig | 2 +-
configs/ls1046aqds_SECURE_BOOT_defconfig | 2 +-
configs/ls1046aqds_defconfig | 2 +-
configs/ls1046aqds_lpuart_defconfig | 2 +-
configs/ls1046aqds_nand_defconfig | 2 +-
configs/ls1046aqds_qspi_defconfig | 2 +-
configs/ls1046aqds_sdcard_ifc_defconfig | 2 +-
configs/ls1046aqds_sdcard_qspi_defconfig | 2 +-
configs/ls1046aqds_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls1046aqds_tfa_defconfig | 2 +-
configs/ls1046ardb_emmc_defconfig | 2 +-
configs/ls1046ardb_qspi_SECURE_BOOT_defconfig | 2 +-
configs/ls1046ardb_qspi_defconfig | 2 +-
configs/ls1046ardb_qspi_spl_defconfig | 2 +-
configs/ls1046ardb_sdcard_defconfig | 2 +-
configs/ls1046ardb_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls1046ardb_tfa_defconfig | 2 +-
configs/ls1088aqds_defconfig | 2 +-
configs/ls1088aqds_qspi_SECURE_BOOT_defconfig | 2 +-
configs/ls1088aqds_qspi_defconfig | 2 +-
configs/ls1088aqds_sdcard_ifc_defconfig | 2 +-
configs/ls1088aqds_sdcard_qspi_defconfig | 2 +-
configs/ls1088aqds_tfa_defconfig | 2 +-
configs/ls1088ardb_qspi_SECURE_BOOT_defconfig | 2 +-
configs/ls1088ardb_qspi_defconfig | 2 +-
configs/ls1088ardb_sdcard_qspi_defconfig | 2 +-
configs/ls1088ardb_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls1088ardb_tfa_defconfig | 2 +-
configs/ls2080aqds_SECURE_BOOT_defconfig | 2 +-
configs/ls2080aqds_defconfig | 2 +-
configs/ls2080aqds_nand_defconfig | 2 +-
configs/ls2080aqds_qspi_defconfig | 2 +-
configs/ls2080aqds_sdcard_defconfig | 2 +-
configs/ls2080ardb_SECURE_BOOT_defconfig | 2 +-
configs/ls2080ardb_defconfig | 2 +-
configs/ls2080ardb_nand_defconfig | 2 +-
configs/ls2081ardb_defconfig | 2 +-
configs/ls2088aqds_tfa_defconfig | 2 +-
configs/ls2088ardb_qspi_SECURE_BOOT_defconfig | 2 +-
configs/ls2088ardb_qspi_defconfig | 2 +-
configs/ls2088ardb_tfa_SECURE_BOOT_defconfig | 2 +-
configs/ls2088ardb_tfa_defconfig | 2 +-
configs/lx2160aqds_tfa_SECURE_BOOT_defconfig | 2 +-
configs/lx2160aqds_tfa_defconfig | 2 +-
configs/lx2160ardb_tfa_SECURE_BOOT_defconfig | 2 +-
configs/lx2160ardb_tfa_defconfig | 2 +-
configs/lx2160ardb_tfa_stmm_defconfig | 2 +-
configs/mvebu_crb_cn9130_defconfig | 2 +-
configs/mvebu_db_armada8k_defconfig | 2 +-
configs/mvebu_db_cn9130_defconfig | 2 +-
configs/mvebu_espressobin-88f3720_defconfig | 2 +-
configs/mvebu_mcbin-88f8040_defconfig | 2 +-
configs/mvebu_puzzle-m801-88f8040_defconfig | 2 +-
configs/nanopc-t4-rk3399_defconfig | 2 +-
configs/octeontx2_96xx_defconfig | 2 +-
configs/octeontx_81xx_defconfig | 2 +-
configs/octeontx_83xx_defconfig | 2 +-
configs/p3450-0000_defconfig | 2 +-
configs/pinebook-pro-rk3399_defconfig | 2 +-
configs/qemu-x86_64_defconfig | 2 +-
configs/qemu-x86_defconfig | 2 +-
configs/qemu_arm64_defconfig | 2 +-
configs/qemu_arm_defconfig | 2 +-
configs/rcar3_salvator-x_defconfig | 2 +-
configs/roc-pc-mezzanine-rk3399_defconfig | 2 +-
configs/rock-pi-4-rk3399_defconfig | 2 +-
configs/rock-pi-4c-rk3399_defconfig | 2 +-
configs/rock-pi-n10-rk3399pro_defconfig | 2 +-
configs/rock960-rk3399_defconfig | 2 +-
configs/rockpro64-rk3399_defconfig | 2 +-
configs/sandbox64_defconfig | 2 +-
configs/sandbox_defconfig | 2 +-
configs/sandbox_flattree_defconfig | 2 +-
configs/sandbox_noinst_defconfig | 2 +-
configs/sandbox_spl_defconfig | 2 +-
configs/sifive_unmatched_defconfig | 2 +-
configs/synquacer_developerbox_defconfig | 2 +-
configs/turris_mox_defconfig | 2 +-
configs/turris_omnia_defconfig | 2 +-
doc/develop/driver-model/nvme.rst | 1 +
drivers/mailbox/Kconfig | 11 +
drivers/mailbox/Makefile | 1 +
drivers/mailbox/apple-mbox.c | 92 +++++++
drivers/nvme/Kconfig | 21 +-
drivers/nvme/Makefile | 2 +
drivers/nvme/nvme.c | 86 ++-----
drivers/nvme/nvme.h | 70 +++++
drivers/nvme/nvme_apple.c | 240 ++++++++++++++++++
drivers/nvme/nvme_pci.c | 49 ++++
drivers/power/domain/apple-pmgr.c | 73 +++++-
include/configs/apple.h | 7 +
include/linux/apple-mailbox.h | 19 ++
161 files changed, 998 insertions(+), 204 deletions(-)
create mode 100644 arch/arm/include/asm/arch-apple/rtkit.h
rename arch/arm/include/asm/{arch-m1 => arch-apple}/uart.h (100%)
create mode 100644 arch/arm/mach-apple/rtkit.c
create mode 100644 drivers/mailbox/apple-mbox.c
create mode 100644 drivers/nvme/nvme_apple.c
create mode 100644 drivers/nvme/nvme_pci.c
create mode 100644 include/linux/apple-mailbox.h
--
2.34.1
More information about the U-Boot
mailing list