Module Name: src Committed By: skrll Date: Fri Apr 7 08:55:31 UTC 2023
Modified Files: src/sys/arch/aarch64/aarch64: aarch64_machdep.c src/sys/arch/arm/acpi: acpi_platform.c src/sys/arch/arm/altera: cycv_platform.c src/sys/arch/arm/amlogic: meson_platform.c src/sys/arch/arm/apple: apple_platform.c src/sys/arch/arm/arm32: arm32_machdep.c src/sys/arch/arm/broadcom: bcm283x_platform.c src/sys/arch/arm/fdt: arm_fdt.c arm_fdtvar.h arm_platform.c src/sys/arch/arm/nvidia: tegra_platform.c src/sys/arch/arm/nxp: imx6_platform.c src/sys/arch/arm/rockchip: rk_platform.c src/sys/arch/arm/samsung: exynos_platform.c src/sys/arch/arm/sunxi: sunxi_platform.c src/sys/arch/arm/ti: am3_platform.c omap3_platform.c src/sys/arch/arm/vexpress: vexpress_platform.c src/sys/arch/arm/xilinx: zynq_platform.c src/sys/arch/evbarm/fdt: fdt_bus_machdep.c fdt_machdep.c src/sys/dev/fdt: fdtvar.h files.fdt Added Files: src/sys/dev/fdt: fdt_platform.c Log Message: Rename ARM_PLATFORM to FDT_PLATFORM and make it available outside arm. To generate a diff of this commit: cvs rdiff -u -r1.66 -r1.67 src/sys/arch/aarch64/aarch64/aarch64_machdep.c cvs rdiff -u -r1.35 -r1.36 src/sys/arch/arm/acpi/acpi_platform.c cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/altera/cycv_platform.c cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/amlogic/meson_platform.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/apple/apple_platform.c cvs rdiff -u -r1.145 -r1.146 src/sys/arch/arm/arm32/arm32_machdep.c cvs rdiff -u -r1.48 -r1.49 src/sys/arch/arm/broadcom/bcm283x_platform.c cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/fdt/arm_fdt.c cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/fdt/arm_fdtvar.h cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/fdt/arm_platform.c cvs rdiff -u -r1.27 -r1.28 src/sys/arch/arm/nvidia/tegra_platform.c cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/nxp/imx6_platform.c cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/rockchip/rk_platform.c cvs rdiff -u -r1.39 -r1.40 src/sys/arch/arm/samsung/exynos_platform.c cvs rdiff -u -r1.46 -r1.47 src/sys/arch/arm/sunxi/sunxi_platform.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/am3_platform.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/omap3_platform.c cvs rdiff -u -r1.22 -r1.23 src/sys/arch/arm/vexpress/vexpress_platform.c cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/xilinx/zynq_platform.c cvs rdiff -u -r1.2 -r1.3 src/sys/arch/evbarm/fdt/fdt_bus_machdep.c cvs rdiff -u -r1.101 -r1.102 src/sys/arch/evbarm/fdt/fdt_machdep.c cvs rdiff -u -r0 -r1.1 src/sys/dev/fdt/fdt_platform.c cvs rdiff -u -r1.77 -r1.78 src/sys/dev/fdt/fdtvar.h cvs rdiff -u -r1.66 -r1.67 src/sys/dev/fdt/files.fdt Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/aarch64/aarch64/aarch64_machdep.c diff -u src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.66 src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.67 --- src/sys/arch/aarch64/aarch64/aarch64_machdep.c:1.66 Fri Aug 19 08:17:32 2022 +++ src/sys/arch/aarch64/aarch64/aarch64_machdep.c Fri Apr 7 08:55:29 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: aarch64_machdep.c,v 1.66 2022/08/19 08:17:32 ryo Exp $ */ +/* $NetBSD: aarch64_machdep.c,v 1.67 2023/04/07 08:55:29 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: aarch64_machdep.c,v 1.66 2022/08/19 08:17:32 ryo Exp $"); +__KERNEL_RCSID(1, "$NetBSD: aarch64_machdep.c,v 1.67 2023/04/07 08:55:29 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_cpuoptions.h" @@ -74,6 +74,7 @@ __KERNEL_RCSID(1, "$NetBSD: aarch64_mach #include <aarch64/kcore.h> #include <arm/fdt/arm_fdtvar.h> +#include <dev/fdt/fdtvar.h> #include <dev/fdt/fdt_memory.h> #ifdef VERBOSE_INIT_ARM @@ -677,9 +678,9 @@ cpu_startup(void) consinit(); #ifdef FDT - const struct arm_platform * const plat = arm_fdt_platform(); - if (plat->ap_startup != NULL) - plat->ap_startup(); + const struct fdt_platform * const plat = fdt_platform_find(); + if (plat->fp_startup != NULL) + plat->fp_startup(); #endif /* Index: src/sys/arch/arm/acpi/acpi_platform.c diff -u src/sys/arch/arm/acpi/acpi_platform.c:1.35 src/sys/arch/arm/acpi/acpi_platform.c:1.36 --- src/sys/arch/arm/acpi/acpi_platform.c:1.35 Tue Jan 24 06:56:40 2023 +++ src/sys/arch/arm/acpi/acpi_platform.c Fri Apr 7 08:55:29 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: acpi_platform.c,v 1.35 2023/01/24 06:56:40 mlelstv Exp $ */ +/* $NetBSD: acpi_platform.c,v 1.36 2023/04/07 08:55:29 skrll Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ #include "opt_multiprocessor.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: acpi_platform.c,v 1.35 2023/01/24 06:56:40 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: acpi_platform.c,v 1.36 2023/04/07 08:55:29 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -45,7 +45,6 @@ __KERNEL_RCSID(0, "$NetBSD: acpi_platfor #include <sys/kprintf.h> #include <dev/fdt/fdtvar.h> -#include <arm/fdt/arm_fdtvar.h> #include <uvm/uvm_extern.h> @@ -408,15 +407,15 @@ acpi_platform_uart_freq(void) return 0; } -static const struct arm_platform acpi_platform = { - .ap_devmap = acpi_platform_devmap, - .ap_bootstrap = acpi_platform_bootstrap, - .ap_startup = acpi_platform_startup, - .ap_init_attach_args = acpi_platform_init_attach_args, - .ap_device_register = acpi_platform_device_register, - .ap_reset = acpi_platform_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = acpi_platform_uart_freq, +static const struct fdt_platform acpi_platform = { + .fp_devmap = acpi_platform_devmap, + .fp_bootstrap = acpi_platform_bootstrap, + .fp_startup = acpi_platform_startup, + .fp_init_attach_args = acpi_platform_init_attach_args, + .fp_device_register = acpi_platform_device_register, + .fp_reset = acpi_platform_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = acpi_platform_uart_freq, }; -ARM_PLATFORM(acpi, "netbsd,generic-acpi", &acpi_platform); +FDT_PLATFORM(acpi, "netbsd,generic-acpi", &acpi_platform); Index: src/sys/arch/arm/altera/cycv_platform.c diff -u src/sys/arch/arm/altera/cycv_platform.c:1.18 src/sys/arch/arm/altera/cycv_platform.c:1.19 --- src/sys/arch/arm/altera/cycv_platform.c:1.18 Sat Apr 24 23:36:25 2021 +++ src/sys/arch/arm/altera/cycv_platform.c Fri Apr 7 08:55:29 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: cycv_platform.c,v 1.18 2021/04/24 23:36:25 thorpej Exp $ */ +/* $NetBSD: cycv_platform.c,v 1.19 2023/04/07 08:55:29 skrll Exp $ */ /* This file is in the public domain. */ @@ -7,7 +7,7 @@ #include "opt_multiprocessor.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cycv_platform.c,v 1.18 2021/04/24 23:36:25 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cycv_platform.c,v 1.19 2023/04/07 08:55:29 skrll Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include <sys/param.h> @@ -28,8 +28,9 @@ __KERNEL_RCSID(0, "$NetBSD: cycv_platfor #include <arm/bootconfig.h> #include <arm/cpufunc.h> -#include <arm/fdt/arm_fdtvar.h> #include <dev/fdt/fdtvar.h> + +#include <arm/fdt/arm_fdtvar.h> #include <dev/ic/comreg.h> void cycv_platform_early_putchar(char); @@ -164,15 +165,15 @@ cycv_platform_uart_freq(void) { return cycv_clkmgr_early_get_l4_sp_clk(); } -static const struct arm_platform cycv_platform = { - .ap_devmap = cycv_platform_devmap, - .ap_bootstrap = cycv_platform_bootstrap, - .ap_init_attach_args = cycv_platform_init_attach_args, - .ap_device_register = cycv_platform_device_register, - .ap_reset = cycv_platform_reset, - .ap_delay = a9tmr_delay, - .ap_uart_freq = cycv_platform_uart_freq, - .ap_mpstart = cycv_mpstart, +static const struct fdt_platform cycv_platform = { + .fp_devmap = cycv_platform_devmap, + .fp_bootstrap = cycv_platform_bootstrap, + .fp_init_attach_args = cycv_platform_init_attach_args, + .fp_device_register = cycv_platform_device_register, + .fp_reset = cycv_platform_reset, + .fp_delay = a9tmr_delay, + .fp_uart_freq = cycv_platform_uart_freq, + .fp_mpstart = cycv_mpstart, }; -ARM_PLATFORM(cycv, "altr,socfpga-cyclone5", &cycv_platform); +FDT_PLATFORM(cycv, "altr,socfpga-cyclone5", &cycv_platform); Index: src/sys/arch/arm/amlogic/meson_platform.c diff -u src/sys/arch/arm/amlogic/meson_platform.c:1.20 src/sys/arch/arm/amlogic/meson_platform.c:1.21 --- src/sys/arch/arm/amlogic/meson_platform.c:1.20 Sat Apr 24 23:36:26 2021 +++ src/sys/arch/arm/amlogic/meson_platform.c Fri Apr 7 08:55:29 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: meson_platform.c,v 1.20 2021/04/24 23:36:26 thorpej Exp $ */ +/* $NetBSD: meson_platform.c,v 1.21 2023/04/07 08:55:29 skrll Exp $ */ /*- * Copyright (c) 2019 Jared McNeill <jmcne...@invisible.ca> @@ -33,7 +33,7 @@ #include "arml2cc.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: meson_platform.c,v 1.20 2021/04/24 23:36:26 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: meson_platform.c,v 1.21 2023/04/07 08:55:29 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -42,6 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: meson_platfo #include <sys/termios.h> #include <dev/fdt/fdtvar.h> + #include <arm/fdt/arm_fdtvar.h> #include <uvm/uvm_extern.h> @@ -440,18 +441,18 @@ meson8b_mpstart(void) return ret; } -static const struct arm_platform meson8b_platform = { - .ap_devmap = meson_platform_devmap, - .ap_bootstrap = meson8b_platform_bootstrap, - .ap_init_attach_args = meson_platform_init_attach_args, - .ap_device_register = meson8b_platform_device_register, - .ap_reset = meson8b_platform_reset, - .ap_delay = a9ptmr_delay, - .ap_uart_freq = meson_platform_uart_freq, - .ap_mpstart = meson8b_mpstart, +static const struct fdt_platform meson8b_platform = { + .fp_devmap = meson_platform_devmap, + .fp_bootstrap = meson8b_platform_bootstrap, + .fp_init_attach_args = meson_platform_init_attach_args, + .fp_device_register = meson8b_platform_device_register, + .fp_reset = meson8b_platform_reset, + .fp_delay = a9ptmr_delay, + .fp_uart_freq = meson_platform_uart_freq, + .fp_mpstart = meson8b_mpstart, }; -ARM_PLATFORM(meson8b, "amlogic,meson8b", &meson8b_platform); +FDT_PLATFORM(meson8b, "amlogic,meson8b", &meson8b_platform); #endif /* SOC_MESON8B */ #if defined(SOC_MESONGX) @@ -478,21 +479,21 @@ mesongx_platform_reset(void) } } -static const struct arm_platform mesongx_platform = { - .ap_devmap = meson_platform_devmap, - .ap_bootstrap = meson_platform_bootstrap, - .ap_init_attach_args = meson_platform_init_attach_args, - .ap_device_register = meson_platform_device_register, - .ap_reset = mesongx_platform_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = meson_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform mesongx_platform = { + .fp_devmap = meson_platform_devmap, + .fp_bootstrap = meson_platform_bootstrap, + .fp_init_attach_args = meson_platform_init_attach_args, + .fp_device_register = meson_platform_device_register, + .fp_reset = mesongx_platform_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = meson_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; #if defined(SOC_MESONGXBB) -ARM_PLATFORM(mesongxbb, "amlogic,meson-gxbb", &mesongx_platform); +FDT_PLATFORM(mesongxbb, "amlogic,meson-gxbb", &mesongx_platform); #endif /* SOC_MESONGXBB */ #if defined(SOC_MESONGXL) -ARM_PLATFORM(mesongxl, "amlogic,meson-gxl", &mesongx_platform); +FDT_PLATFORM(mesongxl, "amlogic,meson-gxl", &mesongx_platform); #endif /* SOC_MESONGXL */ #endif /* SOC_MESONGX */ Index: src/sys/arch/arm/apple/apple_platform.c diff -u src/sys/arch/arm/apple/apple_platform.c:1.5 src/sys/arch/arm/apple/apple_platform.c:1.6 --- src/sys/arch/arm/apple/apple_platform.c:1.5 Sat Oct 15 11:07:38 2022 +++ src/sys/arch/arm/apple/apple_platform.c Fri Apr 7 08:55:29 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: apple_platform.c,v 1.5 2022/10/15 11:07:38 jmcneill Exp $ */ +/* $NetBSD: apple_platform.c,v 1.6 2023/04/07 08:55:29 skrll Exp $ */ /*- * Copyright (c) 2021 Jared McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: apple_platform.c,v 1.5 2022/10/15 11:07:38 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: apple_platform.c,v 1.6 2023/04/07 08:55:29 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -36,6 +36,7 @@ __KERNEL_RCSID(0, "$NetBSD: apple_platfo #include <sys/termios.h> #include <dev/fdt/fdtvar.h> + #include <arm/fdt/arm_fdtvar.h> #include <uvm/uvm_extern.h> @@ -150,7 +151,7 @@ apple_platform_devmap(void) } static u_int -arm_platform_uart_freq(void) +apple_platform_uart_freq(void) { return 0; } @@ -235,15 +236,15 @@ apple_platform_device_register(device_t } } -static const struct arm_platform apple_arm_platform = { - .ap_devmap = apple_platform_devmap, - .ap_bootstrap = apple_platform_bootstrap, - .ap_init_attach_args = apple_platform_init_attach_args, - .ap_reset = psci_fdt_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = arm_platform_uart_freq, - .ap_device_register = apple_platform_device_register, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform apple_fdt_platform = { + .fp_devmap = apple_platform_devmap, + .fp_bootstrap = apple_platform_bootstrap, + .fp_init_attach_args = apple_platform_init_attach_args, + .fp_reset = psci_fdt_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = apple_platform_uart_freq, + .fp_device_register = apple_platform_device_register, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(apple_arm, "apple,arm-platform", &apple_arm_platform); +FDT_PLATFORM(apple_arm, "apple,arm-platform", &apple_fdt_platform); Index: src/sys/arch/arm/arm32/arm32_machdep.c diff -u src/sys/arch/arm/arm32/arm32_machdep.c:1.145 src/sys/arch/arm/arm32/arm32_machdep.c:1.146 --- src/sys/arch/arm/arm32/arm32_machdep.c:1.145 Thu Jan 19 08:03:51 2023 +++ src/sys/arch/arm/arm32/arm32_machdep.c Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: arm32_machdep.c,v 1.145 2023/01/19 08:03:51 mlelstv Exp $ */ +/* $NetBSD: arm32_machdep.c,v 1.146 2023/04/07 08:55:30 skrll Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: arm32_machdep.c,v 1.145 2023/01/19 08:03:51 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arm32_machdep.c,v 1.146 2023/04/07 08:55:30 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_arm_start.h" @@ -85,6 +85,8 @@ __KERNEL_RCSID(0, "$NetBSD: arm32_machde #include <machine/pcb.h> #if defined(FDT) +#include <dev/fdt/fdtvar.h> + #include <arm/fdt/arm_fdtvar.h> #include <arch/evbarm/fdt/platform.h> #endif @@ -301,9 +303,9 @@ cpu_startup(void) pmap_postinit(); #ifdef FDT - const struct arm_platform * const plat = arm_fdt_platform(); - if (plat->ap_startup != NULL) - plat->ap_startup(); + const struct fdt_platform * const plat = fdt_platform_find(); + if (plat->fp_startup != NULL) + plat->fp_startup(); #endif /* @@ -893,7 +895,7 @@ extern char KERNEL_BASE_phys[]; void cpu_kernel_vm_init(paddr_t memory_start, psize_t memory_size) { - const struct arm_platform *plat = arm_fdt_platform(); + const struct fdt_platform *plat = fdt_platform_find(); #ifdef __HAVE_MM_MD_DIRECT_MAPPED_PHYS const bool mapallmem_p = true; @@ -914,7 +916,7 @@ cpu_kernel_vm_init(paddr_t memory_start, arm32_bootmem_init(memory_start, memory_size, KERNEL_BASE_PHYS); arm32_kernel_vm_init(KERNEL_VM_BASE, ARM_VECTORS_HIGH, 0, - plat->ap_devmap(), mapallmem_p); + plat->fp_devmap(), mapallmem_p); } #endif Index: src/sys/arch/arm/broadcom/bcm283x_platform.c diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.48 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.49 --- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.48 Sat Apr 24 23:36:26 2021 +++ src/sys/arch/arm/broadcom/bcm283x_platform.c Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: bcm283x_platform.c,v 1.48 2021/04/24 23:36:26 thorpej Exp $ */ +/* $NetBSD: bcm283x_platform.c,v 1.49 2023/04/07 08:55:30 skrll Exp $ */ /*- * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.48 2021/04/24 23:36:26 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.49 2023/04/07 08:55:30 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_bcm283x.h" @@ -1481,7 +1481,7 @@ bcm283x_platform_uart_freq(void) /* * We are safe to access stdout phandle - consinit did before - * calling ap_uart_freq + * calling fp_uart_freq */ const int phandle = fdtbus_get_stdout_phandle(); @@ -1497,55 +1497,55 @@ bcm283x_platform_uart_freq(void) } #if defined(SOC_BCM2835) -static const struct arm_platform bcm2835_platform = { - .ap_devmap = bcm2835_platform_devmap, - .ap_bootstrap = bcm2835_platform_bootstrap, - .ap_init_attach_args = bcm2835_platform_init_attach_args, - .ap_device_register = bcm283x_platform_device_register, - .ap_reset = bcm2835_system_reset, - .ap_delay = bcm2835_tmr_delay, - .ap_uart_freq = bcm283x_platform_uart_freq, +static const struct fdt_platform bcm2835_platform = { + .fp_devmap = bcm2835_platform_devmap, + .fp_bootstrap = bcm2835_platform_bootstrap, + .fp_init_attach_args = bcm2835_platform_init_attach_args, + .fp_device_register = bcm283x_platform_device_register, + .fp_reset = bcm2835_system_reset, + .fp_delay = bcm2835_tmr_delay, + .fp_uart_freq = bcm283x_platform_uart_freq, }; -ARM_PLATFORM(bcm2835, "brcm,bcm2835", &bcm2835_platform); +FDT_PLATFORM(bcm2835, "brcm,bcm2835", &bcm2835_platform); #endif #if defined(SOC_BCM2836) -static const struct arm_platform bcm2836_platform = { - .ap_devmap = bcm2836_platform_devmap, - .ap_bootstrap = bcm2836_platform_bootstrap, - .ap_init_attach_args = bcm2836_platform_init_attach_args, - .ap_device_register = bcm283x_platform_device_register, - .ap_reset = bcm2835_system_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = bcm283x_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform bcm2836_platform = { + .fp_devmap = bcm2836_platform_devmap, + .fp_bootstrap = bcm2836_platform_bootstrap, + .fp_init_attach_args = bcm2836_platform_init_attach_args, + .fp_device_register = bcm283x_platform_device_register, + .fp_reset = bcm2835_system_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = bcm283x_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -static const struct arm_platform bcm2837_platform = { - .ap_devmap = bcm2836_platform_devmap, - .ap_bootstrap = bcm2836_platform_bootstrap, - .ap_init_attach_args = bcm2836_platform_init_attach_args, - .ap_device_register = bcm283x_platform_device_register, - .ap_reset = bcm2835_system_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = bcm283x_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform bcm2837_platform = { + .fp_devmap = bcm2836_platform_devmap, + .fp_bootstrap = bcm2836_platform_bootstrap, + .fp_init_attach_args = bcm2836_platform_init_attach_args, + .fp_device_register = bcm283x_platform_device_register, + .fp_reset = bcm2835_system_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = bcm283x_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -static const struct arm_platform bcm2711_platform = { - .ap_devmap = bcm2711_platform_devmap, - .ap_bootstrap = bcm2711_platform_bootstrap, - .ap_init_attach_args = bcm2711_platform_init_attach_args, - .ap_device_register = bcm283x_platform_device_register, - .ap_reset = bcm2835_system_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = bcm283x_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform bcm2711_platform = { + .fp_devmap = bcm2711_platform_devmap, + .fp_bootstrap = bcm2711_platform_bootstrap, + .fp_init_attach_args = bcm2711_platform_init_attach_args, + .fp_device_register = bcm283x_platform_device_register, + .fp_reset = bcm2835_system_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = bcm283x_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(bcm2836, "brcm,bcm2836", &bcm2836_platform); -ARM_PLATFORM(bcm2837, "brcm,bcm2837", &bcm2837_platform); -ARM_PLATFORM(bcm2711, "brcm,bcm2711", &bcm2711_platform); +FDT_PLATFORM(bcm2836, "brcm,bcm2836", &bcm2836_platform); +FDT_PLATFORM(bcm2837, "brcm,bcm2837", &bcm2837_platform); +FDT_PLATFORM(bcm2711, "brcm,bcm2711", &bcm2711_platform); #endif Index: src/sys/arch/arm/fdt/arm_fdt.c diff -u src/sys/arch/arm/fdt/arm_fdt.c:1.20 src/sys/arch/arm/fdt/arm_fdt.c:1.21 --- src/sys/arch/arm/fdt/arm_fdt.c:1.20 Sun Oct 10 13:03:09 2021 +++ src/sys/arch/arm/fdt/arm_fdt.c Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: arm_fdt.c,v 1.20 2021/10/10 13:03:09 jmcneill Exp $ */ +/* $NetBSD: arm_fdt.c,v 1.21 2023/04/07 08:55:30 skrll Exp $ */ /*- * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> @@ -31,7 +31,7 @@ #include "opt_modular.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: arm_fdt.c,v 1.20 2021/10/10 13:03:09 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arm_fdt.c,v 1.21 2023/04/07 08:55:30 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -44,6 +44,7 @@ __KERNEL_RCSID(0, "$NetBSD: arm_fdt.c,v #include <uvm/uvm_extern.h> #include <dev/fdt/fdtvar.h> + #include <dev/ofw/openfirm.h> #include <arm/fdt/arm_fdtvar.h> @@ -94,7 +95,7 @@ arm_fdt_match(device_t parent, cfdata_t void arm_fdt_attach(device_t parent, device_t self, void *aux) { - const struct arm_platform *plat = arm_fdt_platform(); + const struct fdt_platform *plat = fdt_platform_find(); struct fdt_attach_args faa; aprint_naive("\n"); @@ -106,57 +107,12 @@ arm_fdt_attach(device_t parent, device_t arm_fdt_efi_init(self); #endif - plat->ap_init_attach_args(&faa); + plat->fp_init_attach_args(&faa); faa.faa_name = ""; faa.faa_phandle = OF_peer(0); config_found(self, &faa, NULL, CFARGS_NONE); } - -const struct arm_platform * -arm_fdt_platform(void) -{ - static const struct arm_platform_info *booted_platform = NULL; - __link_set_decl(arm_platforms, struct arm_platform_info); - struct arm_platform_info * const *info; - - if (booted_platform == NULL) { - const struct arm_platform_info *best_info = NULL; - const int phandle = OF_peer(0); - int match, best_match = 0; - - __link_set_foreach(info, arm_platforms) { - const struct device_compatible_entry compat_data[] = { - { .compat = (*info)->api_compat }, - DEVICE_COMPAT_EOL - }; - - match = of_compatible_match(phandle, compat_data); - if (match > best_match) { - best_match = match; - best_info = *info; - } - } - - booted_platform = best_info; - } - - /* - * No SoC specific platform was found. Try to find a generic - * platform definition and use that if available. - */ - if (booted_platform == NULL) { - __link_set_foreach(info, arm_platforms) { - if (strcmp((*info)->api_compat, ARM_PLATFORM_DEFAULT) == 0) { - booted_platform = *info; - break; - } - } - } - - return booted_platform == NULL ? NULL : booted_platform->api_ops; -} - void arm_fdt_cpu_hatch_register(void *priv, void (*cb)(void *, struct cpu_info *)) { Index: src/sys/arch/arm/fdt/arm_fdtvar.h diff -u src/sys/arch/arm/fdt/arm_fdtvar.h:1.19 src/sys/arch/arm/fdt/arm_fdtvar.h:1.20 --- src/sys/arch/arm/fdt/arm_fdtvar.h:1.19 Sun Sep 5 13:20:34 2021 +++ src/sys/arch/arm/fdt/arm_fdtvar.h Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: arm_fdtvar.h,v 1.19 2021/09/05 13:20:34 jmcneill Exp $ */ +/* $NetBSD: arm_fdtvar.h,v 1.20 2023/04/07 08:55:30 skrll Exp $ */ /*- * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> @@ -29,50 +29,13 @@ #ifndef _ARM_ARM_FDTVAR_H #define _ARM_ARM_FDTVAR_H -struct fdt_attach_args; - -/* - * Platform-specific data - */ - -struct arm_platform { - const struct pmap_devmap * (*ap_devmap)(void); - void (*ap_bootstrap)(void); - int (*ap_mpstart)(void); - void (*ap_startup)(void); - void (*ap_init_attach_args)(struct fdt_attach_args *); - void (*ap_device_register)(device_t, void *); - void (*ap_reset)(void); - void (*ap_delay)(u_int); - u_int (*ap_uart_freq)(void); -}; - -struct arm_platform_info { - const char * api_compat; - const struct arm_platform * api_ops; -}; - -#define ARM_PLATFORM_DEFAULT "" - -#define _ARM_PLATFORM_REGISTER(name) \ - __link_set_add_rodata(arm_platforms, __CONCAT(name,_platinfo)); - -#define ARM_PLATFORM(_name, _compat, _ops) \ -static const struct arm_platform_info __CONCAT(_name,_platinfo) = { \ - .api_compat = (_compat), \ - .api_ops = (_ops) \ -}; \ -_ARM_PLATFORM_REGISTER(_name) - -const struct arm_platform * arm_fdt_platform(void); - /* * CPU enable methods */ struct arm_cpu_method { - const char * acm_compat; - int (*acm_enable)(int); + const char * acm_compat; + int (*acm_enable)(int); }; #define _ARM_CPU_METHOD_REGISTER(_name) \ Index: src/sys/arch/arm/fdt/arm_platform.c diff -u src/sys/arch/arm/fdt/arm_platform.c:1.6 src/sys/arch/arm/fdt/arm_platform.c:1.7 --- src/sys/arch/arm/fdt/arm_platform.c:1.6 Sat Feb 25 08:19:35 2023 +++ src/sys/arch/arm/fdt/arm_platform.c Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: arm_platform.c,v 1.6 2023/02/25 08:19:35 skrll Exp $ */ +/* $NetBSD: arm_platform.c,v 1.7 2023/04/07 08:55:30 skrll Exp $ */ /*- * Copyright (c) 2020 Jared McNeill <jmcne...@invisible.ca> @@ -38,7 +38,7 @@ #include "opt_console.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: arm_platform.c,v 1.6 2023/02/25 08:19:35 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arm_platform.c,v 1.7 2023/04/07 08:55:30 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -47,7 +47,6 @@ __KERNEL_RCSID(0, "$NetBSD: arm_platform #include <sys/termios.h> #include <dev/fdt/fdtvar.h> -#include <arm/fdt/arm_fdtvar.h> #include <uvm/uvm_extern.h> @@ -58,6 +57,8 @@ __KERNEL_RCSID(0, "$NetBSD: arm_platform #include <arm/cortex/gtmr_var.h> #include <arm/arm/psci.h> + +#include <arm/fdt/arm_fdtvar.h> #include <arm/fdt/psci_fdtvar.h> #include <evbarm/dev/plcomreg.h> @@ -137,15 +138,15 @@ arm_platform_uart_freq(void) return 0; } -static const struct arm_platform arm_platform = { - .ap_devmap = arm_platform_devmap, - .ap_bootstrap = arm_fdt_cpu_bootstrap, - .ap_init_attach_args = arm_platform_init_attach_args, - .ap_device_register = arm_platform_device_register, - .ap_reset = psci_fdt_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = arm_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform arm_platform = { + .fp_devmap = arm_platform_devmap, + .fp_bootstrap = arm_fdt_cpu_bootstrap, + .fp_init_attach_args = arm_platform_init_attach_args, + .fp_device_register = arm_platform_device_register, + .fp_reset = psci_fdt_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = arm_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(arm, ARM_PLATFORM_DEFAULT, &arm_platform); +FDT_PLATFORM(arm, FDT_PLATFORM_DEFAULT, &arm_platform); Index: src/sys/arch/arm/nvidia/tegra_platform.c diff -u src/sys/arch/arm/nvidia/tegra_platform.c:1.27 src/sys/arch/arm/nvidia/tegra_platform.c:1.28 --- src/sys/arch/arm/nvidia/tegra_platform.c:1.27 Sat Apr 24 23:36:27 2021 +++ src/sys/arch/arm/nvidia/tegra_platform.c Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: tegra_platform.c,v 1.27 2021/04/24 23:36:27 thorpej Exp $ */ +/* $NetBSD: tegra_platform.c,v 1.28 2023/04/07 08:55:30 skrll Exp $ */ /*- * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> @@ -34,7 +34,7 @@ #include "ukbd.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.27 2021/04/24 23:36:27 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.28 2023/04/07 08:55:30 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -217,31 +217,31 @@ tegra_platform_uart_freq(void) #endif /* SOC_TEGRA124 || SOC_TEGRA210 */ #if defined(SOC_TEGRA124) -static const struct arm_platform tegra124_platform = { - .ap_devmap = tegra_platform_devmap, - .ap_bootstrap = tegra124_platform_bootstrap, - .ap_init_attach_args = tegra_platform_init_attach_args, - .ap_device_register = tegra_platform_device_register, - .ap_reset = tegra_platform_reset, - .ap_delay = tegra_platform_delay, - .ap_uart_freq = tegra_platform_uart_freq, - .ap_mpstart = tegra124_mpstart, +static const struct fdt_platform tegra124_platform = { + .fp_devmap = tegra_platform_devmap, + .fp_bootstrap = tegra124_platform_bootstrap, + .fp_init_attach_args = tegra_platform_init_attach_args, + .fp_device_register = tegra_platform_device_register, + .fp_reset = tegra_platform_reset, + .fp_delay = tegra_platform_delay, + .fp_uart_freq = tegra_platform_uart_freq, + .fp_mpstart = tegra124_mpstart, }; -ARM_PLATFORM(tegra124, "nvidia,tegra124", &tegra124_platform); +FDT_PLATFORM(tegra124, "nvidia,tegra124", &tegra124_platform); #endif #if defined(SOC_TEGRA210) -static const struct arm_platform tegra210_platform = { - .ap_devmap = tegra_platform_devmap, - .ap_bootstrap = tegra210_platform_bootstrap, - .ap_init_attach_args = tegra_platform_init_attach_args, - .ap_device_register = tegra_platform_device_register, - .ap_reset = tegra_platform_reset, - .ap_delay = tegra_platform_delay, - .ap_uart_freq = tegra_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform tegra210_platform = { + .fp_devmap = tegra_platform_devmap, + .fp_bootstrap = tegra210_platform_bootstrap, + .fp_init_attach_args = tegra_platform_init_attach_args, + .fp_device_register = tegra_platform_device_register, + .fp_reset = tegra_platform_reset, + .fp_delay = tegra_platform_delay, + .fp_uart_freq = tegra_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(tegra210, "nvidia,tegra210", &tegra210_platform); +FDT_PLATFORM(tegra210, "nvidia,tegra210", &tegra210_platform); #endif Index: src/sys/arch/arm/nxp/imx6_platform.c diff -u src/sys/arch/arm/nxp/imx6_platform.c:1.6 src/sys/arch/arm/nxp/imx6_platform.c:1.7 --- src/sys/arch/arm/nxp/imx6_platform.c:1.6 Sat Apr 24 23:36:28 2021 +++ src/sys/arch/arm/nxp/imx6_platform.c Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: imx6_platform.c,v 1.6 2021/04/24 23:36:28 thorpej Exp $ */ +/* $NetBSD: imx6_platform.c,v 1.7 2023/04/07 08:55:30 skrll Exp $ */ /*- * Copyright (c) 2019 Genetec Corporation. All rights reserved. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: imx6_platform.c,v 1.6 2021/04/24 23:36:28 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: imx6_platform.c,v 1.7 2023/04/07 08:55:30 skrll Exp $"); #include "arml2cc.h" #include "opt_console.h" @@ -42,6 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: imx6_platfor #include <sys/termios.h> #include <dev/fdt/fdtvar.h> + #include <arm/fdt/arm_fdtvar.h> #include <uvm/uvm_extern.h> @@ -222,17 +223,17 @@ imx6_platform_reset(void) __asm("wfi"); } -const struct arm_platform imx6_platform = { - .ap_devmap = imx_platform_devmap, - .ap_bootstrap = imx_platform_bootstrap, - .ap_init_attach_args = imx_platform_init_attach_args, - .ap_device_register = imx_platform_device_register, - .ap_reset = imx6_platform_reset, - .ap_delay = a9ptmr_delay, - .ap_uart_freq = imx_platform_uart_freq, - .ap_mpstart = imx_platform_mpstart, +static const struct fdt_platform imx6_platform = { + .fp_devmap = imx_platform_devmap, + .fp_bootstrap = imx_platform_bootstrap, + .fp_init_attach_args = imx_platform_init_attach_args, + .fp_device_register = imx_platform_device_register, + .fp_reset = imx6_platform_reset, + .fp_delay = a9ptmr_delay, + .fp_uart_freq = imx_platform_uart_freq, + .fp_mpstart = imx_platform_mpstart, }; -ARM_PLATFORM(imx6dl, "fsl,imx6dl", &imx6_platform); -ARM_PLATFORM(imx6q, "fsl,imx6q", &imx6_platform); -ARM_PLATFORM(imx6qp, "fsl,imx6qp", &imx6_platform); +FDT_PLATFORM(imx6dl, "fsl,imx6dl", &imx6_platform); +FDT_PLATFORM(imx6q, "fsl,imx6q", &imx6_platform); +FDT_PLATFORM(imx6qp, "fsl,imx6qp", &imx6_platform); Index: src/sys/arch/arm/rockchip/rk_platform.c diff -u src/sys/arch/arm/rockchip/rk_platform.c:1.16 src/sys/arch/arm/rockchip/rk_platform.c:1.17 --- src/sys/arch/arm/rockchip/rk_platform.c:1.16 Tue Aug 23 05:39:06 2022 +++ src/sys/arch/arm/rockchip/rk_platform.c Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: rk_platform.c,v 1.16 2022/08/23 05:39:06 ryo Exp $ */ +/* $NetBSD: rk_platform.c,v 1.17 2023/04/07 08:55:30 skrll Exp $ */ /*- * Copyright (c) 2018,2021 Jared McNeill <jmcne...@invisible.ca> @@ -31,7 +31,7 @@ #include "opt_console.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rk_platform.c,v 1.16 2022/08/23 05:39:06 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rk_platform.c,v 1.17 2023/04/07 08:55:30 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -39,8 +39,8 @@ __KERNEL_RCSID(0, "$NetBSD: rk_platform. #include <sys/device.h> #include <sys/termios.h> - #include <dev/fdt/fdtvar.h> + #include <arm/fdt/arm_fdtvar.h> #include <uvm/uvm_extern.h> @@ -175,18 +175,18 @@ rk3288_platform_uart_freq(void) return RK3288_UART_FREQ; } -static const struct arm_platform rk3288_platform = { - .ap_devmap = rk3288_platform_devmap, - .ap_bootstrap = rk3288_platform_bootstrap, - .ap_init_attach_args = rk_platform_init_attach_args, - .ap_device_register = rk_platform_device_register, - .ap_reset = rk3288_platform_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = rk3288_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform rk3288_platform = { + .fp_devmap = rk3288_platform_devmap, + .fp_bootstrap = rk3288_platform_bootstrap, + .fp_init_attach_args = rk_platform_init_attach_args, + .fp_device_register = rk_platform_device_register, + .fp_reset = rk3288_platform_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = rk3288_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(rk3288, "rockchip,rk3288", &rk3288_platform); +FDT_PLATFORM(rk3288, "rockchip,rk3288", &rk3288_platform); #endif /* SOC_RK3288 */ @@ -232,18 +232,18 @@ rk3328_platform_uart_freq(void) return RK3328_UART_FREQ; } -static const struct arm_platform rk3328_platform = { - .ap_devmap = rk3328_platform_devmap, - .ap_bootstrap = rk_platform_bootstrap, - .ap_init_attach_args = rk_platform_init_attach_args, - .ap_device_register = rk_platform_device_register, - .ap_reset = psci_fdt_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = rk3328_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform rk3328_platform = { + .fp_devmap = rk3328_platform_devmap, + .fp_bootstrap = rk_platform_bootstrap, + .fp_init_attach_args = rk_platform_init_attach_args, + .fp_device_register = rk_platform_device_register, + .fp_reset = psci_fdt_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = rk3328_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(rk3328, "rockchip,rk3328", &rk3328_platform); +FDT_PLATFORM(rk3328, "rockchip,rk3328", &rk3328_platform); #endif /* SOC_RK3328 */ @@ -290,18 +290,18 @@ rk3399_platform_uart_freq(void) return RK3399_UART_FREQ; } -static const struct arm_platform rk3399_platform = { - .ap_devmap = rk3399_platform_devmap, - .ap_bootstrap = rk_platform_bootstrap, - .ap_init_attach_args = rk_platform_init_attach_args, - .ap_device_register = rk_platform_device_register, - .ap_reset = psci_fdt_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = rk3399_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform rk3399_platform = { + .fp_devmap = rk3399_platform_devmap, + .fp_bootstrap = rk_platform_bootstrap, + .fp_init_attach_args = rk_platform_init_attach_args, + .fp_device_register = rk_platform_device_register, + .fp_reset = psci_fdt_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = rk3399_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(rk3399, "rockchip,rk3399", &rk3399_platform); +FDT_PLATFORM(rk3399, "rockchip,rk3399", &rk3399_platform); #endif /* SOC_RK3399 */ @@ -349,18 +349,18 @@ rk3588_platform_uart_freq(void) return RK3588_UART_FREQ; } -static const struct arm_platform rk3588_platform = { - .ap_devmap = rk3588_platform_devmap, - .ap_bootstrap = rk_platform_bootstrap, - .ap_init_attach_args = rk_platform_init_attach_args, - .ap_device_register = rk_platform_device_register, - .ap_reset = psci_fdt_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = rk3588_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform rk3588_platform = { + .fp_devmap = rk3588_platform_devmap, + .fp_bootstrap = rk_platform_bootstrap, + .fp_init_attach_args = rk_platform_init_attach_args, + .fp_device_register = rk_platform_device_register, + .fp_reset = psci_fdt_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = rk3588_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(rk3588, "rockchip,rk3588", &rk3588_platform); +FDT_PLATFORM(rk3588, "rockchip,rk3588", &rk3588_platform); #endif /* SOC_RK3588 */ Index: src/sys/arch/arm/samsung/exynos_platform.c diff -u src/sys/arch/arm/samsung/exynos_platform.c:1.39 src/sys/arch/arm/samsung/exynos_platform.c:1.40 --- src/sys/arch/arm/samsung/exynos_platform.c:1.39 Sat Oct 29 13:29:46 2022 +++ src/sys/arch/arm/samsung/exynos_platform.c Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: exynos_platform.c,v 1.39 2022/10/29 13:29:46 jmcneill Exp $ */ +/* $NetBSD: exynos_platform.c,v 1.40 2023/04/07 08:55:30 skrll Exp $ */ /*- * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> @@ -35,7 +35,7 @@ #include "ukbd.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: exynos_platform.c,v 1.39 2022/10/29 13:29:46 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: exynos_platform.c,v 1.40 2023/04/07 08:55:30 skrll Exp $"); #define EXYNOS_CORE_VBASE KERNEL_IO_VBASE @@ -296,18 +296,18 @@ exynos4_platform_bootstrap(void) #endif } -static const struct arm_platform exynos4_platform = { - .ap_devmap = exynos4_platform_devmap, -// .ap_mpstart = exynos4_mpstart, - .ap_bootstrap = exynos4_platform_bootstrap, - .ap_init_attach_args = exynos_platform_init_attach_args, - .ap_device_register = exynos_platform_device_register, - .ap_reset = exynos5_platform_reset, - .ap_delay = mct_delay, - .ap_uart_freq = exynos_platform_uart_freq, +static const struct fdt_platform exynos4_platform = { + .fp_devmap = exynos4_platform_devmap, +// .fp_mpstart = exynos4_mpstart, + .fp_bootstrap = exynos4_platform_bootstrap, + .fp_init_attach_args = exynos_platform_init_attach_args, + .fp_device_register = exynos_platform_device_register, + .fp_reset = exynos5_platform_reset, + .fp_delay = mct_delay, + .fp_uart_freq = exynos_platform_uart_freq, }; -ARM_PLATFORM(exynos4, "samsung,exynos4", &exynos4_platform); +FDT_PLATFORM(exynos4, "samsung,exynos4", &exynos4_platform); #endif @@ -362,16 +362,16 @@ exynos5_platform_bootstrap(void) arm_fdt_cpu_bootstrap(); } -static const struct arm_platform exynos5_platform = { - .ap_devmap = exynos5_platform_devmap, - .ap_bootstrap = exynos5_platform_bootstrap, - .ap_mpstart = exynos_platform_mpstart, - .ap_init_attach_args = exynos_platform_init_attach_args, - .ap_device_register = exynos_platform_device_register, - .ap_reset = exynos5_platform_reset, - .ap_delay = mct_delay, - .ap_uart_freq = exynos_platform_uart_freq, +static const struct fdt_platform exynos5_platform = { + .fp_devmap = exynos5_platform_devmap, + .fp_bootstrap = exynos5_platform_bootstrap, + .fp_mpstart = exynos_platform_mpstart, + .fp_init_attach_args = exynos_platform_init_attach_args, + .fp_device_register = exynos_platform_device_register, + .fp_reset = exynos5_platform_reset, + .fp_delay = mct_delay, + .fp_uart_freq = exynos_platform_uart_freq, }; -ARM_PLATFORM(exynos5, "samsung,exynos5", &exynos5_platform); +FDT_PLATFORM(exynos5, "samsung,exynos5", &exynos5_platform); #endif Index: src/sys/arch/arm/sunxi/sunxi_platform.c diff -u src/sys/arch/arm/sunxi/sunxi_platform.c:1.46 src/sys/arch/arm/sunxi/sunxi_platform.c:1.47 --- src/sys/arch/arm/sunxi/sunxi_platform.c:1.46 Tue Jun 28 05:19:03 2022 +++ src/sys/arch/arm/sunxi/sunxi_platform.c Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: sunxi_platform.c,v 1.46 2022/06/28 05:19:03 skrll Exp $ */ +/* $NetBSD: sunxi_platform.c,v 1.47 2023/04/07 08:55:30 skrll Exp $ */ /*- * Copyright (c) 2017 Jared McNeill <jmcne...@invisible.ca> @@ -31,7 +31,7 @@ #include "opt_console.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sunxi_platform.c,v 1.46 2022/06/28 05:19:03 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sunxi_platform.c,v 1.47 2023/04/07 08:55:30 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -40,6 +40,7 @@ __KERNEL_RCSID(0, "$NetBSD: sunxi_platfo #include <sys/termios.h> #include <dev/fdt/fdtvar.h> + #include <arm/fdt/arm_fdtvar.h> #include <uvm/uvm_extern.h> @@ -426,121 +427,121 @@ sun50i_h6_platform_reset(void) bus_space_write_4(bst, reset_bsh, SUN50I_H6_WDT_MODE, SUN50I_H6_WDT_MODE_EN); } -static const struct arm_platform sun4i_platform = { - .ap_devmap = sunxi_platform_devmap, - .ap_bootstrap = sun4i_platform_bootstrap, - .ap_init_attach_args = sunxi_platform_init_attach_args, - .ap_device_register = sunxi_platform_device_register, - .ap_reset = sun4i_platform_reset, - .ap_delay = sun4i_platform_delay, - .ap_uart_freq = sunxi_platform_uart_freq, +static const struct fdt_platform sun4i_platform = { + .fp_devmap = sunxi_platform_devmap, + .fp_bootstrap = sun4i_platform_bootstrap, + .fp_init_attach_args = sunxi_platform_init_attach_args, + .fp_device_register = sunxi_platform_device_register, + .fp_reset = sun4i_platform_reset, + .fp_delay = sun4i_platform_delay, + .fp_uart_freq = sunxi_platform_uart_freq, }; -ARM_PLATFORM(sun4i_a10, "allwinner,sun4i-a10", &sun4i_platform); +FDT_PLATFORM(sun4i_a10, "allwinner,sun4i-a10", &sun4i_platform); -static const struct arm_platform sun5i_platform = { - .ap_devmap = sunxi_platform_devmap, - .ap_bootstrap = sun4i_platform_bootstrap, - .ap_init_attach_args = sunxi_platform_init_attach_args, - .ap_device_register = sunxi_platform_device_register, - .ap_reset = sun4i_platform_reset, - .ap_delay = sun4i_platform_delay, - .ap_uart_freq = sunxi_platform_uart_freq, +static const struct fdt_platform sun5i_platform = { + .fp_devmap = sunxi_platform_devmap, + .fp_bootstrap = sun4i_platform_bootstrap, + .fp_init_attach_args = sunxi_platform_init_attach_args, + .fp_device_register = sunxi_platform_device_register, + .fp_reset = sun4i_platform_reset, + .fp_delay = sun4i_platform_delay, + .fp_uart_freq = sunxi_platform_uart_freq, }; -ARM_PLATFORM(sun5i_a13, "allwinner,sun5i-a13", &sun5i_platform); -ARM_PLATFORM(sun5i_gr8, "nextthing,gr8", &sun5i_platform); +FDT_PLATFORM(sun5i_a13, "allwinner,sun5i-a13", &sun5i_platform); +FDT_PLATFORM(sun5i_gr8, "nextthing,gr8", &sun5i_platform); -static const struct arm_platform sun6i_platform = { - .ap_devmap = sunxi_platform_devmap, - .ap_bootstrap = sun6i_platform_bootstrap, - .ap_init_attach_args = sunxi_platform_init_attach_args, - .ap_device_register = sunxi_platform_device_register, - .ap_reset = sun6i_platform_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = sunxi_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform sun6i_platform = { + .fp_devmap = sunxi_platform_devmap, + .fp_bootstrap = sun6i_platform_bootstrap, + .fp_init_attach_args = sunxi_platform_init_attach_args, + .fp_device_register = sunxi_platform_device_register, + .fp_reset = sun6i_platform_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = sunxi_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(sun6i_a31, "allwinner,sun6i-a31", &sun6i_platform); +FDT_PLATFORM(sun6i_a31, "allwinner,sun6i-a31", &sun6i_platform); -static const struct arm_platform sun7i_platform = { - .ap_devmap = sunxi_platform_devmap, - .ap_bootstrap = sun4i_platform_bootstrap, - .ap_init_attach_args = sunxi_platform_init_attach_args, - .ap_device_register = sunxi_platform_device_register, - .ap_reset = sun4i_platform_reset, - .ap_delay = sun4i_platform_delay, - .ap_uart_freq = sunxi_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform sun7i_platform = { + .fp_devmap = sunxi_platform_devmap, + .fp_bootstrap = sun4i_platform_bootstrap, + .fp_init_attach_args = sunxi_platform_init_attach_args, + .fp_device_register = sunxi_platform_device_register, + .fp_reset = sun4i_platform_reset, + .fp_delay = sun4i_platform_delay, + .fp_uart_freq = sunxi_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(sun7i_a20, "allwinner,sun7i-a20", &sun7i_platform); +FDT_PLATFORM(sun7i_a20, "allwinner,sun7i-a20", &sun7i_platform); -static const struct arm_platform sun8i_platform = { - .ap_devmap = sunxi_platform_devmap, - .ap_bootstrap = sun6i_platform_bootstrap, - .ap_init_attach_args = sunxi_platform_init_attach_args, - .ap_device_register = sunxi_platform_device_register, - .ap_reset = sun6i_platform_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = sunxi_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform sun8i_platform = { + .fp_devmap = sunxi_platform_devmap, + .fp_bootstrap = sun6i_platform_bootstrap, + .fp_init_attach_args = sunxi_platform_init_attach_args, + .fp_device_register = sunxi_platform_device_register, + .fp_reset = sun6i_platform_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = sunxi_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(sun8i_h2plus, "allwinner,sun8i-h2-plus", &sun8i_platform); -ARM_PLATFORM(sun8i_h3, "allwinner,sun8i-h3", &sun8i_platform); -ARM_PLATFORM(sun8i_v3s, "allwinner,sun8i-v3s", &sun8i_platform); - -static const struct arm_platform sun8i_a83t_platform = { - .ap_devmap = sun8i_a83t_platform_devmap, - .ap_bootstrap = sun6i_platform_bootstrap, - .ap_init_attach_args = sunxi_platform_init_attach_args, - .ap_device_register = sunxi_platform_device_register, - .ap_reset = sun6i_platform_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = sunxi_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +FDT_PLATFORM(sun8i_h2plus, "allwinner,sun8i-h2-plus", &sun8i_platform); +FDT_PLATFORM(sun8i_h3, "allwinner,sun8i-h3", &sun8i_platform); +FDT_PLATFORM(sun8i_v3s, "allwinner,sun8i-v3s", &sun8i_platform); + +static const struct fdt_platform sun8i_a83t_platform = { + .fp_devmap = sun8i_a83t_platform_devmap, + .fp_bootstrap = sun6i_platform_bootstrap, + .fp_init_attach_args = sunxi_platform_init_attach_args, + .fp_device_register = sunxi_platform_device_register, + .fp_reset = sun6i_platform_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = sunxi_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(sun8i_a83t, "allwinner,sun8i-a83t", &sun8i_a83t_platform); +FDT_PLATFORM(sun8i_a83t, "allwinner,sun8i-a83t", &sun8i_a83t_platform); -static const struct arm_platform sun9i_platform = { - .ap_devmap = sun9i_a80_platform_devmap, - .ap_bootstrap = sun9i_platform_bootstrap, - .ap_init_attach_args = sunxi_platform_init_attach_args, - .ap_device_register = sunxi_platform_device_register, - .ap_reset = sun9i_platform_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = sunxi_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform sun9i_platform = { + .fp_devmap = sun9i_a80_platform_devmap, + .fp_bootstrap = sun9i_platform_bootstrap, + .fp_init_attach_args = sunxi_platform_init_attach_args, + .fp_device_register = sunxi_platform_device_register, + .fp_reset = sun9i_platform_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = sunxi_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(sun9i_a80, "allwinner,sun9i-a80", &sun9i_platform); +FDT_PLATFORM(sun9i_a80, "allwinner,sun9i-a80", &sun9i_platform); -static const struct arm_platform sun50i_platform = { - .ap_devmap = sunxi_platform_devmap, - .ap_bootstrap = sun6i_platform_bootstrap, - .ap_init_attach_args = sunxi_platform_init_attach_args, - .ap_device_register = sunxi_platform_device_register, - .ap_reset = sun6i_platform_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = sunxi_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform sun50i_platform = { + .fp_devmap = sunxi_platform_devmap, + .fp_bootstrap = sun6i_platform_bootstrap, + .fp_init_attach_args = sunxi_platform_init_attach_args, + .fp_device_register = sunxi_platform_device_register, + .fp_reset = sun6i_platform_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = sunxi_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(sun50i_a64, "allwinner,sun50i-a64", &sun50i_platform); -ARM_PLATFORM(sun50i_h5, "allwinner,sun50i-h5", &sun50i_platform); +FDT_PLATFORM(sun50i_a64, "allwinner,sun50i-a64", &sun50i_platform); +FDT_PLATFORM(sun50i_h5, "allwinner,sun50i-h5", &sun50i_platform); -static const struct arm_platform sun50i_h6_platform = { - .ap_devmap = sunxi_platform_devmap, - .ap_bootstrap = sun50i_h6_platform_bootstrap, - .ap_init_attach_args = sunxi_platform_init_attach_args, - .ap_device_register = sunxi_platform_device_register, - .ap_reset = sun50i_h6_platform_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = sunxi_platform_uart_freq, - .ap_mpstart = arm_fdt_cpu_mpstart, +static const struct fdt_platform sun50i_h6_platform = { + .fp_devmap = sunxi_platform_devmap, + .fp_bootstrap = sun50i_h6_platform_bootstrap, + .fp_init_attach_args = sunxi_platform_init_attach_args, + .fp_device_register = sunxi_platform_device_register, + .fp_reset = sun50i_h6_platform_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = sunxi_platform_uart_freq, + .fp_mpstart = arm_fdt_cpu_mpstart, }; -ARM_PLATFORM(sun50i_h6, "allwinner,sun50i-h6", &sun50i_h6_platform); +FDT_PLATFORM(sun50i_h6, "allwinner,sun50i-h6", &sun50i_h6_platform); Index: src/sys/arch/arm/ti/am3_platform.c diff -u src/sys/arch/arm/ti/am3_platform.c:1.3 src/sys/arch/arm/ti/am3_platform.c:1.4 --- src/sys/arch/arm/ti/am3_platform.c:1.3 Mon Sep 28 11:54:23 2020 +++ src/sys/arch/arm/ti/am3_platform.c Fri Apr 7 08:55:30 2023 @@ -1,13 +1,14 @@ -/* $NetBSD: am3_platform.c,v 1.3 2020/09/28 11:54:23 jmcneill Exp $ */ +/* $NetBSD: am3_platform.c,v 1.4 2023/04/07 08:55:30 skrll Exp $ */ #include "opt_console.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: am3_platform.c,v 1.3 2020/09/28 11:54:23 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: am3_platform.c,v 1.4 2023/04/07 08:55:30 skrll Exp $"); #include <sys/param.h> #include <dev/fdt/fdtvar.h> + #include <arm/fdt/arm_fdtvar.h> #include <uvm/uvm_extern.h> @@ -137,13 +138,13 @@ am33xx_platform_reset(void) *resetaddr = 1; } -static const struct arm_platform am33xx_platform = { - .ap_devmap = am33xx_platform_devmap, - .ap_init_attach_args = am33xx_platform_init_attach_args, - .ap_bootstrap = am33xx_platform_bootstrap, - .ap_uart_freq = am33xx_platform_uart_freq, - .ap_delay = am33xx_platform_delay, - .ap_reset = am33xx_platform_reset, +static const struct fdt_platform am33xx_platform = { + .fp_devmap = am33xx_platform_devmap, + .fp_init_attach_args = am33xx_platform_init_attach_args, + .fp_bootstrap = am33xx_platform_bootstrap, + .fp_uart_freq = am33xx_platform_uart_freq, + .fp_delay = am33xx_platform_delay, + .fp_reset = am33xx_platform_reset, }; -ARM_PLATFORM(am33xx, "ti,am33xx", &am33xx_platform); +FDT_PLATFORM(am33xx, "ti,am33xx", &am33xx_platform); Index: src/sys/arch/arm/ti/omap3_platform.c diff -u src/sys/arch/arm/ti/omap3_platform.c:1.7 src/sys/arch/arm/ti/omap3_platform.c:1.8 --- src/sys/arch/arm/ti/omap3_platform.c:1.7 Sat Apr 24 23:36:29 2021 +++ src/sys/arch/arm/ti/omap3_platform.c Fri Apr 7 08:55:30 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: omap3_platform.c,v 1.7 2021/04/24 23:36:29 thorpej Exp $ */ +/* $NetBSD: omap3_platform.c,v 1.8 2023/04/07 08:55:30 skrll Exp $ */ /*- * Copyright (c) 2019 Jared McNeill <jmcne...@invisible.ca> @@ -30,7 +30,7 @@ #include "opt_console.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: omap3_platform.c,v 1.7 2021/04/24 23:36:29 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: omap3_platform.c,v 1.8 2023/04/07 08:55:30 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -39,6 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: omap3_platfo #include <sys/termios.h> #include <dev/fdt/fdtvar.h> + #include <arm/fdt/arm_fdtvar.h> #include <uvm/uvm_extern.h> @@ -185,14 +186,14 @@ omap3_platform_delay(u_int n) } } -static const struct arm_platform omap3_platform = { - .ap_devmap = omap3_platform_devmap, - .ap_bootstrap = arm_fdt_cpu_bootstrap, - .ap_init_attach_args = omap3_platform_init_attach_args, - .ap_device_register = omap3_platform_device_register, - .ap_reset = omap3_platform_reset, - .ap_delay = omap3_platform_delay, - .ap_uart_freq = omap3_platform_uart_freq, +static const struct fdt_platform omap3_platform = { + .fp_devmap = omap3_platform_devmap, + .fp_bootstrap = arm_fdt_cpu_bootstrap, + .fp_init_attach_args = omap3_platform_init_attach_args, + .fp_device_register = omap3_platform_device_register, + .fp_reset = omap3_platform_reset, + .fp_delay = omap3_platform_delay, + .fp_uart_freq = omap3_platform_uart_freq, }; -ARM_PLATFORM(omap3, "ti,omap3", &omap3_platform); +FDT_PLATFORM(omap3, "ti,omap3", &omap3_platform); Index: src/sys/arch/arm/vexpress/vexpress_platform.c diff -u src/sys/arch/arm/vexpress/vexpress_platform.c:1.22 src/sys/arch/arm/vexpress/vexpress_platform.c:1.23 --- src/sys/arch/arm/vexpress/vexpress_platform.c:1.22 Sat Apr 24 23:36:29 2021 +++ src/sys/arch/arm/vexpress/vexpress_platform.c Fri Apr 7 08:55:31 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: vexpress_platform.c,v 1.22 2021/04/24 23:36:29 thorpej Exp $ */ +/* $NetBSD: vexpress_platform.c,v 1.23 2023/04/07 08:55:31 skrll Exp $ */ /*- * Copyright (c) 2017 Jared McNeill <jmcne...@invisible.ca> @@ -30,7 +30,7 @@ #include "opt_console.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vexpress_platform.c,v 1.22 2021/04/24 23:36:29 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vexpress_platform.c,v 1.23 2023/04/07 08:55:31 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -215,15 +215,15 @@ vexpress_platform_uart_freq(void) return VEXPRESS_REF_FREQ; } -static const struct arm_platform vexpress_platform = { - .ap_devmap = vexpress_platform_devmap, - .ap_bootstrap = vexpress_platform_bootstrap, - .ap_mpstart = vexpress_a15_smp_init, - .ap_init_attach_args = vexpress_platform_init_attach_args, - .ap_device_register = vexpress_platform_device_register, - .ap_reset = vexpress_platform_reset, - .ap_delay = gtmr_delay, - .ap_uart_freq = vexpress_platform_uart_freq, +static const struct fdt_platform vexpress_platform = { + .fp_devmap = vexpress_platform_devmap, + .fp_bootstrap = vexpress_platform_bootstrap, + .fp_mpstart = vexpress_a15_smp_init, + .fp_init_attach_args = vexpress_platform_init_attach_args, + .fp_device_register = vexpress_platform_device_register, + .fp_reset = vexpress_platform_reset, + .fp_delay = gtmr_delay, + .fp_uart_freq = vexpress_platform_uart_freq, }; -ARM_PLATFORM(vexpress, "arm,vexpress", &vexpress_platform); +FDT_PLATFORM(vexpress, "arm,vexpress", &vexpress_platform); Index: src/sys/arch/arm/xilinx/zynq_platform.c diff -u src/sys/arch/arm/xilinx/zynq_platform.c:1.10 src/sys/arch/arm/xilinx/zynq_platform.c:1.11 --- src/sys/arch/arm/xilinx/zynq_platform.c:1.10 Mon Oct 31 22:23:38 2022 +++ src/sys/arch/arm/xilinx/zynq_platform.c Fri Apr 7 08:55:31 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: zynq_platform.c,v 1.10 2022/10/31 22:23:38 jmcneill Exp $ */ +/* $NetBSD: zynq_platform.c,v 1.11 2023/04/07 08:55:31 skrll Exp $ */ /*- * Copyright (c) 2019 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ #include "arml2cc.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: zynq_platform.c,v 1.10 2022/10/31 22:23:38 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: zynq_platform.c,v 1.11 2023/04/07 08:55:31 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -252,18 +252,18 @@ zynq_platform_reset(void) bus_space_write_4(bst, bsh, PSS_RST_CTRL, SOFT_RST); } -static const struct arm_platform zynq_platform = { - .ap_devmap = zynq_platform_devmap, - .ap_bootstrap = zynq_platform_bootstrap, - .ap_init_attach_args = zynq_platform_init_attach_args, - .ap_device_register = zynq_platform_device_register, - .ap_reset = zynq_platform_reset, - .ap_delay = a9tmr_delay, - .ap_uart_freq = zynq_platform_uart_freq, +static const struct fdt_platform zynq_platform = { + .fp_devmap = zynq_platform_devmap, + .fp_bootstrap = zynq_platform_bootstrap, + .fp_init_attach_args = zynq_platform_init_attach_args, + .fp_device_register = zynq_platform_device_register, + .fp_reset = zynq_platform_reset, + .fp_delay = a9tmr_delay, + .fp_uart_freq = zynq_platform_uart_freq, #ifdef MULTIPROCESSOR - .ap_mpstart = zynq_platform_mpstart, + .fp_mpstart = zynq_platform_mpstart, #endif }; -ARM_PLATFORM(zynq, "xlnx,zynq-7000", &zynq_platform); +FDT_PLATFORM(zynq, "xlnx,zynq-7000", &zynq_platform); Index: src/sys/arch/evbarm/fdt/fdt_bus_machdep.c diff -u src/sys/arch/evbarm/fdt/fdt_bus_machdep.c:1.2 src/sys/arch/evbarm/fdt/fdt_bus_machdep.c:1.3 --- src/sys/arch/evbarm/fdt/fdt_bus_machdep.c:1.2 Sat Oct 15 11:07:39 2022 +++ src/sys/arch/evbarm/fdt/fdt_bus_machdep.c Fri Apr 7 08:55:31 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: fdt_bus_machdep.c,v 1.2 2022/10/15 11:07:39 jmcneill Exp $ */ +/* $NetBSD: fdt_bus_machdep.c,v 1.3 2023/04/07 08:55:31 skrll Exp $ */ /*- * Copyright (c) 2021 Jared McNeill <jmcne...@invisible.ca> @@ -27,13 +27,14 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: fdt_bus_machdep.c,v 1.2 2022/10/15 11:07:39 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fdt_bus_machdep.c,v 1.3 2023/04/07 08:55:31 skrll Exp $"); #include <sys/param.h> #include <sys/bus.h> #include <sys/kmem.h> #include <dev/fdt/fdtvar.h> + #include <arm/fdt/arm_fdtvar.h> extern struct bus_space arm_generic_bs_tag; @@ -52,11 +53,11 @@ nonposted_mmio_bs_map(void *t, bus_addr_ bus_space_tag_t fdtbus_bus_tag_create(int phandle, uint32_t flags) { - const struct arm_platform *plat = arm_fdt_platform(); + const struct fdt_platform *plat = fdt_platform_find(); struct bus_space *tagp; struct fdt_attach_args faa; - plat->ap_init_attach_args(&faa); + plat->fp_init_attach_args(&faa); tagp = kmem_alloc(sizeof(*tagp), KM_SLEEP); *tagp = *faa.faa_bst; Index: src/sys/arch/evbarm/fdt/fdt_machdep.c diff -u src/sys/arch/evbarm/fdt/fdt_machdep.c:1.101 src/sys/arch/evbarm/fdt/fdt_machdep.c:1.102 --- src/sys/arch/evbarm/fdt/fdt_machdep.c:1.101 Sun Mar 5 22:04:54 2023 +++ src/sys/arch/evbarm/fdt/fdt_machdep.c Fri Apr 7 08:55:31 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: fdt_machdep.c,v 1.101 2023/03/05 22:04:54 mlelstv Exp $ */ +/* $NetBSD: fdt_machdep.c,v 1.102 2023/04/07 08:55:31 skrll Exp $ */ /*- * Copyright (c) 2015-2017 Jared McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: fdt_machdep.c,v 1.101 2023/03/05 22:04:54 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fdt_machdep.c,v 1.102 2023/04/07 08:55:31 skrll Exp $"); #include "opt_arm_debug.h" #include "opt_bootconfig.h" @@ -92,6 +92,8 @@ __KERNEL_RCSID(0, "$NetBSD: fdt_machdep. #include <evbarm/fdt/platform.h> #include <arm/fdt/arm_fdtvar.h> + +#include <dev/fdt/fdtvar.h> #include <dev/fdt/fdt_private.h> #include <dev/fdt/fdt_memory.h> @@ -489,7 +491,7 @@ fdt_map_efi_runtime(const char *prop, en vaddr_t initarm(void *arg) { - const struct arm_platform *plat; + const struct fdt_platform *plat; uint64_t memory_start, memory_end; /* set temporally to work printf()/panic() even before consinit() */ @@ -511,7 +513,7 @@ initarm(void *arg) fdtbus_init(fdt_data); /* Lookup platform specific backend */ - plat = arm_fdt_platform(); + plat = fdt_platform_find(); if (plat == NULL) panic("Kernel does not support this device"); @@ -533,12 +535,12 @@ initarm(void *arg) * l1pt VA is fine */ - VPRINTF("devmap %p\n", plat->ap_devmap()); + VPRINTF("devmap %p\n", plat->fp_devmap()); extern char ARM_BOOTSTRAP_LxPT[]; - pmap_devmap_bootstrap((vaddr_t)ARM_BOOTSTRAP_LxPT, plat->ap_devmap()); + pmap_devmap_bootstrap((vaddr_t)ARM_BOOTSTRAP_LxPT, plat->fp_devmap()); VPRINTF("bootstrap\n"); - plat->ap_bootstrap(); + plat->fp_bootstrap(); /* * If stdout-path is specified on the command line, override the @@ -637,8 +639,8 @@ initarm(void *arg) error = 0; if ((boothowto & RB_MD1) == 0) { VPRINTF("mpstart\n"); - if (plat->ap_mpstart) - error = plat->ap_mpstart(); + if (plat->fp_mpstart) + error = plat->fp_mpstart(); } if (error) @@ -696,7 +698,7 @@ void consinit(void) { static bool initialized = false; - const struct arm_platform *plat = arm_fdt_platform(); + const struct fdt_platform *plat = fdt_platform_find(); const struct fdt_console *cons = fdtbus_get_console(); struct fdt_attach_args faa; u_int uart_freq = 0; @@ -704,11 +706,11 @@ consinit(void) if (initialized || cons == NULL) return; - plat->ap_init_attach_args(&faa); + plat->fp_init_attach_args(&faa); faa.faa_phandle = fdtbus_get_stdout_phandle(); - if (plat->ap_uart_freq != NULL) - uart_freq = plat->ap_uart_freq(); + if (plat->fp_uart_freq != NULL) + uart_freq = plat->fp_uart_freq(); cons->consinit(&faa, uart_freq); @@ -733,9 +735,9 @@ cpu_startup_hook(void) void delay(u_int us) { - const struct arm_platform *plat = arm_fdt_platform(); + const struct fdt_platform *plat = fdt_platform_find(); - plat->ap_delay(us); + plat->fp_delay(us); } static void @@ -849,7 +851,7 @@ fdt_detect_root_device(device_t dev) static void fdt_device_register(device_t self, void *aux) { - const struct arm_platform *plat = arm_fdt_platform(); + const struct fdt_platform *plat = fdt_platform_find(); if (device_is_a(self, "armfdt")) { fdt_setup_initrd(); @@ -870,8 +872,8 @@ fdt_device_register(device_t self, void } #endif - if (plat && plat->ap_device_register) - plat->ap_device_register(self, aux); + if (plat && plat->fp_device_register) + plat->fp_device_register(self, aux); } static void @@ -910,12 +912,12 @@ fdt_cpu_rootconf(void) static void fdt_reset(void) { - const struct arm_platform *plat = arm_fdt_platform(); + const struct fdt_platform *plat = fdt_platform_find(); fdtbus_power_reset(); - if (plat && plat->ap_reset) - plat->ap_reset(); + if (plat && plat->fp_reset) + plat->fp_reset(); } static void Index: src/sys/dev/fdt/fdtvar.h diff -u src/sys/dev/fdt/fdtvar.h:1.77 src/sys/dev/fdt/fdtvar.h:1.78 --- src/sys/dev/fdt/fdtvar.h:1.77 Fri Mar 4 08:19:06 2022 +++ src/sys/dev/fdt/fdtvar.h Fri Apr 7 08:55:31 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: fdtvar.h,v 1.77 2022/03/04 08:19:06 skrll Exp $ */ +/* $NetBSD: fdtvar.h,v 1.78 2023/04/07 08:55:31 skrll Exp $ */ /*- * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca> @@ -306,6 +306,44 @@ _FDT_OPP_REGISTER(_name) TAILQ_HEAD(fdt_conslist, fdt_console_info); +/* + * Platform-specific data + */ + +struct fdt_platform { + const struct pmap_devmap * + (*fp_devmap)(void); + void (*fp_bootstrap)(void); + int (*fp_mpstart)(void); + void (*fp_startup)(void); + void (*fp_init_attach_args)(struct fdt_attach_args *); + void (*fp_device_register)(device_t, void *); + void (*fp_reset)(void); + void (*fp_delay)(u_int); + u_int (*fp_uart_freq)(void); +}; + +struct fdt_platform_info { + const char * fpi_compat; + const struct fdt_platform * fpi_ops; +}; + +#define FDT_PLATFORM_DEFAULT "" + +#define _FDT_PLATFORM_REGISTER(name) \ + __link_set_add_rodata(fdt_platforms, __CONCAT(name,_platinfo)); + +#define FDT_PLATFORM(_name, _compat, _ops) \ +static const struct fdt_platform_info __CONCAT(_name,_platinfo) = { \ + .fpi_compat = (_compat), \ + .fpi_ops = (_ops) \ +}; \ +_FDT_PLATFORM_REGISTER(_name) + +const struct fdt_platform * + fdt_platform_find(void); + + struct fdt_dma_range { paddr_t dr_sysbase; bus_addr_t dr_busbase; Index: src/sys/dev/fdt/files.fdt diff -u src/sys/dev/fdt/files.fdt:1.66 src/sys/dev/fdt/files.fdt:1.67 --- src/sys/dev/fdt/files.fdt:1.66 Sat Nov 5 17:31:37 2022 +++ src/sys/dev/fdt/files.fdt Fri Apr 7 08:55:31 2023 @@ -1,4 +1,4 @@ -# $NetBSD: files.fdt,v 1.66 2022/11/05 17:31:37 jmcneill Exp $ +# $NetBSD: files.fdt,v 1.67 2023/04/07 08:55:31 skrll Exp $ include "external/bsd/libfdt/conf/files.libfdt" @@ -68,6 +68,7 @@ file dev/fdt/i2cmux_fdt.c iicmux_fdt file dev/fdt/fdt_memory.c fdtbase file dev/fdt/fdt_openfirm.c fdtbase +file dev/fdt/fdt_platform.c fdtbase file dev/fdt/fdt_subr.c fdtbase file dev/fdt/fdt_clock.c fdt Added files: Index: src/sys/dev/fdt/fdt_platform.c diff -u /dev/null src/sys/dev/fdt/fdt_platform.c:1.1 --- /dev/null Fri Apr 7 08:55:31 2023 +++ src/sys/dev/fdt/fdt_platform.c Fri Apr 7 08:55:31 2023 @@ -0,0 +1,83 @@ +/* $NetBSD: fdt_platform.c,v 1.1 2023/04/07 08:55:31 skrll Exp $ */ + +/*- + * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__KERNEL_RCSID(0, "$NetBSD: fdt_platform.c,v 1.1 2023/04/07 08:55:31 skrll Exp $"); + +#include <sys/param.h> + +#include <dev/ofw/openfirm.h> + +#include <dev/fdt/fdtvar.h> + +const struct fdt_platform * +fdt_platform_find(void) +{ + static const struct fdt_platform_info *booted_platform = NULL; + __link_set_decl(fdt_platforms, struct fdt_platform_info); + struct fdt_platform_info * const *info; + + if (booted_platform == NULL) { + const struct fdt_platform_info *best_info = NULL; + const int phandle = OF_peer(0); + int match, best_match = 0; + + __link_set_foreach(info, fdt_platforms) { + const struct device_compatible_entry compat_data[] = { + { .compat = (*info)->fpi_compat }, + DEVICE_COMPAT_EOL + }; + + match = of_compatible_match(phandle, compat_data); + if (match > best_match) { + best_match = match; + best_info = *info; + } + } + + booted_platform = best_info; + } + + /* + * No SoC specific platform was found. Try to find a generic + * platform definition and use that if available. + */ + if (booted_platform == NULL) { + __link_set_foreach(info, fdt_platforms) { + if (strcmp((*info)->fpi_compat, FDT_PLATFORM_DEFAULT) == 0) { + booted_platform = *info; + break; + } + } + } + + return booted_platform == NULL ? NULL : booted_platform->fpi_ops; +} + +// XXXNH remove this and rely on a default +FDT_PLATFORM(dummy, NULL, NULL);