Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 Jul 2012 17:34:04 +0000 (UTC)
From:      Jakub Wojciech Klama <jceel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r238304 - user/jceel/soc2012_armv6/sys/dev/fdt
Message-ID:  <201207091734.q69HY47u031093@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jceel
Date: Mon Jul  9 17:34:03 2012
New Revision: 238304
URL: http://svn.freebsd.org/changeset/base/238304

Log:
  Add shorthand function for finding FDT node of UART selected
  for console (in "chosen" section).

Modified:
  user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c
  user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.h

Modified: user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c	Mon Jul  9 17:28:26 2012	(r238303)
+++ user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.c	Mon Jul  9 17:34:03 2012	(r238304)
@@ -129,6 +129,30 @@ moveon:
 	return (0);
 }
 
+phandle_t
+fdt_lookup_console_uart(void)
+{
+	char buf[64];
+	phandle_t node, chosen;
+
+	/*
+	 * Retrieve /chosen/std{in,out}.
+	 */
+	if ((chosen = OF_finddevice("/chosen")) == -1)
+		return (-1);
+	if (OF_getprop(chosen, "stdin", buf, sizeof(buf)) <= 0)
+		return (-1);
+	if ((node = OF_finddevice(buf)) == -1)
+		return (-1);
+	if (OF_getprop(chosen, "stdout", buf, sizeof(buf)) <= 0)
+		return (-1);
+	if (OF_finddevice(buf) != node)
+		/* Only stdin == stdout is supported. */
+		return (-1);
+
+	return (node);
+}
+
 int
 fdt_read_ranges(phandle_t node, struct fdt_range **ranges, int addr_cells,
     int par_addr_cells, int size_cells)

Modified: user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.h
==============================================================================
--- user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.h	Mon Jul  9 17:28:26 2012	(r238303)
+++ user/jceel/soc2012_armv6/sys/dev/fdt/fdt_common.h	Mon Jul  9 17:34:03 2012	(r238304)
@@ -97,6 +97,7 @@ phandle_t fdt_find_compatible(phandle_t,
 int fdt_get_mem_regions(struct mem_region *, int *, uint32_t *);
 int fdt_get_phyaddr(phandle_t, device_t, int *, void **);
 int fdt_immr_addr(vm_offset_t);
+phandle_t fdt_lookup_console_uart(void);
 int fdt_read_ranges(phandle_t node, struct fdt_range **ranges, int addr_cells,
     int par_addr_cells, int size_cels);
 u_long fdt_ranges_lookup(struct fdt_range *ranges, int nranges, u_long addr,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201207091734.q69HY47u031093>