Skip site navigation (1)Skip section navigation (2)
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>