Module Name: src Committed By: jmcneill Date: Thu Aug 24 13:06:23 UTC 2017
Modified Files: src/sys/arch/arm/conf: files.arm src/sys/arch/arm/cortex: gtmr.c gtmr_var.h src/sys/arch/arm/fdt: arm_fdt.c arm_fdtvar.h gtmr_fdt.c Log Message: Add __HAVE_GENERIC_CPU_INITCLOCKS option. If set, don't export cpu_initclocks from device drivers as common code (in this case FDT) will provide its own copy. To generate a diff of this commit: cvs rdiff -u -r1.133 -r1.134 src/sys/arch/arm/conf/files.arm cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/cortex/gtmr.c cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/cortex/gtmr_var.h cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/fdt/arm_fdt.c \ src/sys/arch/arm/fdt/gtmr_fdt.c cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/fdt/arm_fdtvar.h 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/arm/conf/files.arm diff -u src/sys/arch/arm/conf/files.arm:1.133 src/sys/arch/arm/conf/files.arm:1.134 --- src/sys/arch/arm/conf/files.arm:1.133 Wed Jun 28 23:48:23 2017 +++ src/sys/arch/arm/conf/files.arm Thu Aug 24 13:06:23 2017 @@ -1,4 +1,4 @@ -# $NetBSD: files.arm,v 1.133 2017/06/28 23:48:23 jmcneill Exp $ +# $NetBSD: files.arm,v 1.134 2017/08/24 13:06:23 jmcneill Exp $ # temporary define to allow easy moving to ../arch/arm/arm32 defflag ARM32 @@ -84,6 +84,9 @@ defflag opt_arm_bus_space.h __BUS_SPACE _ARM32_NEED_BUS_DMA_BOUNCE BUSDMA_COUNTERS +# Timer options +defflag opt_arm_timer.h __HAVE_GENERIC_CPU_INITCLOCKS + # Floating point emulator obsolete defflag ARMFPE Index: src/sys/arch/arm/cortex/gtmr.c diff -u src/sys/arch/arm/cortex/gtmr.c:1.18 src/sys/arch/arm/cortex/gtmr.c:1.19 --- src/sys/arch/arm/cortex/gtmr.c:1.18 Sat Jun 17 22:49:37 2017 +++ src/sys/arch/arm/cortex/gtmr.c Thu Aug 24 13:06:23 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: gtmr.c,v 1.18 2017/06/17 22:49:37 jmcneill Exp $ */ +/* $NetBSD: gtmr.c,v 1.19 2017/08/24 13:06:23 jmcneill Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gtmr.c,v 1.18 2017/06/17 22:49:37 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gtmr.c,v 1.19 2017/08/24 13:06:23 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -223,7 +223,7 @@ gtmr_init_cpu_clock(struct cpu_info *ci) } void -cpu_initclocks(void) +gtmr_cpu_initclocks(void) { struct gtmr_softc * const sc = >mr_sc; Index: src/sys/arch/arm/cortex/gtmr_var.h diff -u src/sys/arch/arm/cortex/gtmr_var.h:1.6 src/sys/arch/arm/cortex/gtmr_var.h:1.7 --- src/sys/arch/arm/cortex/gtmr_var.h:1.6 Thu Apr 2 03:11:21 2015 +++ src/sys/arch/arm/cortex/gtmr_var.h Thu Aug 24 13:06:23 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: gtmr_var.h,v 1.6 2015/04/02 03:11:21 matt Exp $ */ +/* $NetBSD: gtmr_var.h,v 1.7 2017/08/24 13:06:23 jmcneill Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. * All rights reserved. @@ -45,11 +45,17 @@ struct gtmr_softc { }; #ifdef _KERNEL +#include "opt_arm_timer.h" struct cpu_info; int gtmr_intr(void *); void gtmr_init_cpu_clock(struct cpu_info *); void gtmr_delay(unsigned int n); void gtmr_bootdelay(unsigned int n); +#ifdef __HAVE_GENERIC_CPU_INITCLOCKS +void gtmr_cpu_initclocks(void); +#else +#define gtmr_cpu_initclocks cpu_initclocks +#endif #endif #endif /* _ARM_CORTEX_GTMR_VAR_ */ Index: src/sys/arch/arm/fdt/arm_fdt.c diff -u src/sys/arch/arm/fdt/arm_fdt.c:1.4 src/sys/arch/arm/fdt/arm_fdt.c:1.5 --- src/sys/arch/arm/fdt/arm_fdt.c:1.4 Thu Jun 29 20:55:10 2017 +++ src/sys/arch/arm/fdt/arm_fdt.c Thu Aug 24 13:06:23 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: arm_fdt.c,v 1.4 2017/06/29 20:55:10 jmcneill Exp $ */ +/* $NetBSD: arm_fdt.c,v 1.5 2017/08/24 13:06:23 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> @@ -26,8 +26,10 @@ * SUCH DAMAGE. */ +#include "opt_arm_timer.h" + #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: arm_fdt.c,v 1.4 2017/06/29 20:55:10 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arm_fdt.c,v 1.5 2017/08/24 13:06:23 jmcneill Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -61,6 +63,7 @@ static TAILQ_HEAD(, arm_fdt_cpu_hatch_cb TAILQ_HEAD_INITIALIZER(arm_fdt_cpu_hatch_cbs); static void (*_arm_fdt_irq_handler)(void *) = NULL; +static void (*_arm_fdt_timer_init)(void) = NULL; int arm_fdt_match(device_t parent, cfdata_t cf, void *aux) @@ -145,6 +148,18 @@ arm_fdt_irq_handler(void *tf) } void +arm_fdt_timer_register(void (*timerfn)(void)) +{ + if (_arm_fdt_timer_init != NULL) { +#ifdef DIAGNOSTIC + aprint_verbose("%s: timer already registered\n", __func__); +#endif + return; + } + _arm_fdt_timer_init = timerfn; +} + +void arm_fdt_memory_dump(paddr_t pa) { const struct arm_platform *plat = arm_fdt_platform(); @@ -166,3 +181,13 @@ arm_fdt_memory_dump(paddr_t pa) bus_space_read_4(bst, bsh, i + 12)); } } + +#ifdef __HAVE_GENERIC_CPU_INITCLOCKS +void +cpu_initclocks(void) +{ + if (_arm_fdt_timer_init == NULL) + panic("cpu_initclocks: no timer registered"); + _arm_fdt_timer_init(); +} +#endif Index: src/sys/arch/arm/fdt/gtmr_fdt.c diff -u src/sys/arch/arm/fdt/gtmr_fdt.c:1.4 src/sys/arch/arm/fdt/gtmr_fdt.c:1.5 --- src/sys/arch/arm/fdt/gtmr_fdt.c:1.4 Thu Jul 20 01:52:17 2017 +++ src/sys/arch/arm/fdt/gtmr_fdt.c Thu Aug 24 13:06:23 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: gtmr_fdt.c,v 1.4 2017/07/20 01:52:17 jmcneill Exp $ */ +/* $NetBSD: gtmr_fdt.c,v 1.5 2017/08/24 13:06:23 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gtmr_fdt.c,v 1.4 2017/07/20 01:52:17 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gtmr_fdt.c,v 1.5 2017/08/24 13:06:23 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -78,6 +78,7 @@ gtmr_fdt_attach(device_t parent, device_ config_found(self, &mpcaa, NULL); arm_fdt_cpu_hatch_register(self, gtmr_fdt_cpu_hatch); + arm_fdt_timer_register(gtmr_cpu_initclocks); } static void Index: src/sys/arch/arm/fdt/arm_fdtvar.h diff -u src/sys/arch/arm/fdt/arm_fdtvar.h:1.6 src/sys/arch/arm/fdt/arm_fdtvar.h:1.7 --- src/sys/arch/arm/fdt/arm_fdtvar.h:1.6 Thu Jun 29 20:55:10 2017 +++ src/sys/arch/arm/fdt/arm_fdtvar.h Thu Aug 24 13:06:23 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: arm_fdtvar.h,v 1.6 2017/06/29 20:55:10 jmcneill Exp $ */ +/* $NetBSD: arm_fdtvar.h,v 1.7 2017/08/24 13:06:23 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> @@ -68,6 +68,8 @@ const struct arm_platform * arm_fdt_plat void arm_fdt_cpu_hatch_register(void *, void (*)(void *, struct cpu_info *)); void arm_fdt_cpu_hatch(struct cpu_info *); +void arm_fdt_timer_register(void (*)(void)); + void arm_fdt_irq_set_handler(void (*)(void *)); void arm_fdt_irq_handler(void *);