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 {

Reply via email to