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>