Module Name: src Committed By: jmcneill Date: Fri Jun 2 13:53:29 UTC 2017
Modified Files: src/sys/arch/arm/fdt: arm_fdtvar.h src/sys/arch/arm/nvidia: tegra_com.c tegra_platform.c src/sys/arch/evbarm/fdt: fdt_machdep.c src/sys/dev/fdt: fdtvar.h Log Message: Allow platform code to specify the UART frequency for consinit To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/fdt/arm_fdtvar.h cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/nvidia/tegra_com.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/nvidia/tegra_platform.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/evbarm/fdt/fdt_machdep.c cvs rdiff -u -r1.19 -r1.20 src/sys/dev/fdt/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/fdt/arm_fdtvar.h diff -u src/sys/arch/arm/fdt/arm_fdtvar.h:1.4 src/sys/arch/arm/fdt/arm_fdtvar.h:1.5 --- src/sys/arch/arm/fdt/arm_fdtvar.h:1.4 Fri Jun 2 00:16:27 2017 +++ src/sys/arch/arm/fdt/arm_fdtvar.h Fri Jun 2 13:53:28 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: arm_fdtvar.h,v 1.4 2017/06/02 00:16:27 jmcneill Exp $ */ +/* $NetBSD: arm_fdtvar.h,v 1.5 2017/06/02 13:53:28 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> @@ -43,6 +43,7 @@ struct arm_platform { void (*device_register)(device_t, void *); void (*reset)(void); void (*delay)(u_int); + u_int (*uart_freq)(void); }; struct arm_platform_info { Index: src/sys/arch/arm/nvidia/tegra_com.c diff -u src/sys/arch/arm/nvidia/tegra_com.c:1.7 src/sys/arch/arm/nvidia/tegra_com.c:1.8 --- src/sys/arch/arm/nvidia/tegra_com.c:1.7 Mon May 29 23:13:03 2017 +++ src/sys/arch/arm/nvidia/tegra_com.c Fri Jun 2 13:53:29 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: tegra_com.c,v 1.7 2017/05/29 23:13:03 jmcneill Exp $ */ +/* $NetBSD: tegra_com.c,v 1.8 2017/06/02 13:53:29 jmcneill Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: tegra_com.c,v 1.7 2017/05/29 23:13:03 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: tegra_com.c,v 1.8 2017/06/02 13:53:29 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -48,8 +48,6 @@ __KERNEL_RCSID(1, "$NetBSD: tegra_com.c, #include <dev/fdt/fdtvar.h> -#define PLLP_OUT0_FREQ 408000000 - static int tegra_com_match(device_t, cfdata_t, void *); static void tegra_com_attach(device_t, device_t, void *); @@ -162,9 +160,8 @@ tegra_com_console_match(int phandle) } static void -tegra_com_console_consinit(struct fdt_attach_args *faa) +tegra_com_console_consinit(struct fdt_attach_args *faa, u_int uart_freq) { - const u_int freq = PLLP_OUT0_FREQ; const int phandle = faa->faa_phandle; bus_space_tag_t bst = faa->faa_a4x_bst; bus_addr_t addr; @@ -177,7 +174,7 @@ tegra_com_console_consinit(struct fdt_at speed = 115200; /* default */ flags = fdtbus_get_stdout_flags(); - if (comcnattach(bst, addr, speed, freq, COM_TYPE_TEGRA, flags)) + if (comcnattach(bst, addr, speed, uart_freq, COM_TYPE_TEGRA, flags)) panic("Cannot initialize tegra com console"); } Index: src/sys/arch/arm/nvidia/tegra_platform.c diff -u src/sys/arch/arm/nvidia/tegra_platform.c:1.5 src/sys/arch/arm/nvidia/tegra_platform.c:1.6 --- src/sys/arch/arm/nvidia/tegra_platform.c:1.5 Fri Jun 2 00:16:27 2017 +++ src/sys/arch/arm/nvidia/tegra_platform.c Fri Jun 2 13:53:29 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: tegra_platform.c,v 1.5 2017/06/02 00:16:27 jmcneill Exp $ */ +/* $NetBSD: tegra_platform.c,v 1.6 2017/06/02 13:53:29 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca> @@ -33,7 +33,7 @@ #include "ukbd.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.5 2017/06/02 00:16:27 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tegra_platform.c,v 1.6 2017/06/02 13:53:29 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -60,6 +60,8 @@ __KERNEL_RCSID(0, "$NetBSD: tegra_platfo #include <dev/ic/ns16550reg.h> #include <dev/ic/comreg.h> +#define PLLP_OUT0_FREQ 408000000 + #define DEVMAP_ALIGN(a) ((a) & ~L1_S_OFFSET) #define DEVMAP_SIZE(s) roundup2((s), L1_S_SIZE) #define DEVMAP_ENTRY(va, pa, sz) \ @@ -188,6 +190,12 @@ tegra_platform_delay(u_int us) tegra_timer_delay(us); } +static u_int +tegra_platform_uart_freq(void) +{ + return PLLP_OUT0_FREQ; +} + static const struct arm_platform tegra_platform = { .devmap = tegra_platform_devmap, .bootstrap = tegra_platform_bootstrap, @@ -196,6 +204,7 @@ static const struct arm_platform tegra_p .device_register = tegra_platform_device_register, .reset = tegra_platform_reset, .delay = tegra_platform_delay, + .uart_freq = tegra_platform_uart_freq, }; ARM_PLATFORM(tegra124, "nvidia,tegra124", &tegra_platform); Index: src/sys/arch/evbarm/fdt/fdt_machdep.c diff -u src/sys/arch/evbarm/fdt/fdt_machdep.c:1.3 src/sys/arch/evbarm/fdt/fdt_machdep.c:1.4 --- src/sys/arch/evbarm/fdt/fdt_machdep.c:1.3 Fri Jun 2 00:16:28 2017 +++ src/sys/arch/evbarm/fdt/fdt_machdep.c Fri Jun 2 13:53:29 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: fdt_machdep.c,v 1.3 2017/06/02 00:16:28 jmcneill Exp $ */ +/* $NetBSD: fdt_machdep.c,v 1.4 2017/06/02 13:53:29 jmcneill 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.3 2017/06/02 00:16:28 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fdt_machdep.c,v 1.4 2017/06/02 13:53:29 jmcneill Exp $"); #include "opt_machdep.h" #include "opt_ddb.h" @@ -272,6 +272,7 @@ consinit(void) const struct arm_platform *plat = arm_fdt_platform(); const struct fdt_console *cons = fdtbus_get_console(); struct fdt_attach_args faa; + u_int uart_freq = 0; if (initialized || cons == NULL) return; @@ -279,7 +280,10 @@ consinit(void) plat->init_attach_args(&faa); faa.faa_phandle = fdtbus_get_stdout_phandle(); - cons->consinit(&faa); + if (plat->uart_freq != NULL) + uart_freq = plat->uart_freq(); + + cons->consinit(&faa, uart_freq); initialized = true; } Index: src/sys/dev/fdt/fdtvar.h diff -u src/sys/dev/fdt/fdtvar.h:1.19 src/sys/dev/fdt/fdtvar.h:1.20 --- src/sys/dev/fdt/fdtvar.h:1.19 Mon May 29 23:13:03 2017 +++ src/sys/dev/fdt/fdtvar.h Fri Jun 2 13:53:29 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: fdtvar.h,v 1.19 2017/05/29 23:13:03 jmcneill Exp $ */ +/* $NetBSD: fdtvar.h,v 1.20 2017/06/02 13:53:29 jmcneill Exp $ */ /*- * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca> @@ -174,7 +174,7 @@ struct fdtbus_power_controller_func { struct fdt_console { int (*match)(int); - void (*consinit)(struct fdt_attach_args *); + void (*consinit)(struct fdt_attach_args *, u_int); }; struct fdt_console_info {