Date: Sat, 28 Jan 2012 23:45:32 +0000 (UTC) From: Marius Strobl <marius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r230685 - in stable/8/sys: conf dev/uart sparc64/conf sparc64/pci Message-ID: <201201282345.q0SNjWCN005121@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: marius Date: Sat Jan 28 23:45:31 2012 New Revision: 230685 URL: http://svn.freebsd.org/changeset/base/230685 Log: MFC: r206451, r206453 Add sbbc(4), a driver for the BootBus controller found in Serengeti and StarCat systems which provides time-of-day services for both as well as console service for Serengeti, i.e. Sun Fire V1280. While the latter is described with a device type of serial in the OFW device tree, it isn't actually an UART. Nevertheless the console service is handled by uart(4) as this allowed to re-use quite a bit of MD and MI code. Actually, this idea is stolen from Linux which interfaces the sun4v hypervisor console with the Linux counterpart of uart(4). Added: stable/8/sys/sparc64/pci/sbbc.c - copied, changed from r206451, head/sys/sparc64/pci/sbbc.c Modified: stable/8/sys/conf/files.sparc64 stable/8/sys/dev/uart/uart.h stable/8/sys/dev/uart/uart_cpu_sparc64.c stable/8/sys/sparc64/conf/GENERIC stable/8/sys/sparc64/conf/NOTES Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/conf/files.sparc64 ============================================================================== --- stable/8/sys/conf/files.sparc64 Sat Jan 28 23:37:05 2012 (r230684) +++ stable/8/sys/conf/files.sparc64 Sat Jan 28 23:45:31 2012 (r230685) @@ -81,6 +81,7 @@ sparc64/pci/ofw_pcib_subr.c optional pci sparc64/pci/ofw_pcibus.c optional pci sparc64/pci/ofw_pci_if.m optional pci sparc64/pci/psycho.c optional pci +sparc64/pci/sbbc.c optional uart sbbc sparc64/pci/schizo.c optional pci sparc64/sbus/dma_sbus.c optional sbus sparc64/sbus/sbus.c optional sbus Modified: stable/8/sys/dev/uart/uart.h ============================================================================== --- stable/8/sys/dev/uart/uart.h Sat Jan 28 23:37:05 2012 (r230684) +++ stable/8/sys/dev/uart/uart.h Sat Jan 28 23:45:31 2012 (r230685) @@ -67,6 +67,7 @@ struct uart_class; extern struct uart_class uart_ns8250_class __attribute__((weak)); extern struct uart_class uart_quicc_class __attribute__((weak)); extern struct uart_class uart_sab82532_class __attribute__((weak)); +extern struct uart_class uart_sbbc_class __attribute__((weak)); extern struct uart_class uart_z8530_class __attribute__((weak)); #ifdef PC98 Modified: stable/8/sys/dev/uart/uart_cpu_sparc64.c ============================================================================== --- stable/8/sys/dev/uart/uart_cpu_sparc64.c Sat Jan 28 23:37:05 2012 (r230684) +++ stable/8/sys/dev/uart/uart_cpu_sparc64.c Sat Jan 28 23:45:31 2012 (r230685) @@ -133,6 +133,14 @@ uart_cpu_getdev_console(phandle_t option return (-1); if (strcmp(buf, "serial") != 0) return (-1); + /* For a Serengeti console device point to the bootbus controller. */ + if (OF_getprop(input, "name", buf, sizeof(buf)) > 0 && + !strcmp(buf, "sgcn")) { + if ((chosen = OF_finddevice("/chosen")) == -1) + return (-1); + if (OF_getprop(chosen, "iosram", &input, sizeof(input)) == -1) + return (-1); + } return (input); } @@ -259,6 +267,9 @@ uart_cpu_getdev(int devtype, struct uart !strcmp(compat, "su16552")) { class = &uart_ns8250_class; di->bas.chan = 0; + } else if (!strcmp(compat, "sgsbbc")) { + class = &uart_sbbc_class; + di->bas.chan = 0; } if (class == NULL) return (ENXIO); Modified: stable/8/sys/sparc64/conf/GENERIC ============================================================================== --- stable/8/sys/sparc64/conf/GENERIC Sat Jan 28 23:37:05 2012 (r230684) +++ stable/8/sys/sparc64/conf/GENERIC Sat Jan 28 23:45:31 2012 (r230685) @@ -146,6 +146,9 @@ device mk48txx # Mostek MK48Txx clocks device rtc # rtc (really a front-end for the MC146818) device mc146818 # Motorola MC146818 and compatible clocks device epic # Sun Fire V215/V245 LEDs +device sbbc # Sun BootBus controller (time-of-day clock for + # Serengeti and StarCat, console for Serengeti, + # requires device uart) # Serial (COM) ports device puc # Multi-channel uarts Modified: stable/8/sys/sparc64/conf/NOTES ============================================================================== --- stable/8/sys/sparc64/conf/NOTES Sat Jan 28 23:37:05 2012 (r230684) +++ stable/8/sys/sparc64/conf/NOTES Sat Jan 28 23:45:31 2012 (r230685) @@ -37,6 +37,7 @@ device eeprom # eeprom (really a front device mk48txx # Mostek MK48Txx clocks device rtc # rtc (really a front-end for the MC146818) device mc146818 # Motorola MC146818 and compatible clocks +device sbbc # Sun BootBus controller # # Optional devices: Copied and modified: stable/8/sys/sparc64/pci/sbbc.c (from r206451, head/sys/sparc64/pci/sbbc.c) ============================================================================== --- head/sys/sparc64/pci/sbbc.c Sat Apr 10 11:52:12 2010 (r206451, copy source) +++ stable/8/sys/sparc64/pci/sbbc.c Sat Jan 28 23:45:31 2012 (r230685) @@ -1,5 +1,5 @@ /* $OpenBSD: sbbc.c,v 1.7 2009/11/09 17:53:39 nicm Exp $ */ -/* +/*- * Copyright (c) 2008 Mark Kettenis * * Permission to use, copy, modify, and distribute this software for any
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201201282345.q0SNjWCN005121>