From owner-p4-projects@FreeBSD.ORG Sun Mar 2 12:32:54 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BF2861065683; Sun, 2 Mar 2008 12:32:53 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DF931065673 for ; Sun, 2 Mar 2008 12:32:53 +0000 (UTC) (envelope-from raj@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 726768FC19 for ; Sun, 2 Mar 2008 12:32:53 +0000 (UTC) (envelope-from raj@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m22CWrCc074201 for ; Sun, 2 Mar 2008 12:32:53 GMT (envelope-from raj@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m22CWrYR074199 for perforce@freebsd.org; Sun, 2 Mar 2008 12:32:53 GMT (envelope-from raj@freebsd.org) Date: Sun, 2 Mar 2008 12:32:53 GMT Message-Id: <200803021232.m22CWrYR074199@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to raj@freebsd.org using -f From: Rafal Jaworowski To: Perforce Change Reviews Cc: Subject: PERFORCE change 136654 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Mar 2008 12:32:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=136654 Change 136654 by raj@raj_mimi on 2008/03/02 12:32:18 Consolidate uart_cpu_powerpc.c so that different platforms are supported per config option. This approach based on conditional compilation is temporary and will be turned into a more subtle dispatching technique in the future. Affected files ... .. //depot/projects/e500/sys/dev/uart/uart_cpu_powerpc.c#4 edit Differences ... ==== //depot/projects/e500/sys/dev/uart/uart_cpu_powerpc.c#4 (text) ==== @@ -27,24 +27,36 @@ #include __FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_powerpc.c,v 1.4 2007/12/19 18:00:49 marcel Exp $"); +#include "opt_platform.h" + #include #include #include +#ifndef MPC85XX +#include +#include +#endif + #include #include +#ifdef MPC85XX bus_space_tag_t uart_bus_space_io = &bs_be_tag; bus_space_tag_t uart_bus_space_mem = &bs_be_tag; +#else +bus_space_tag_t uart_bus_space_io = &bs_le_tag; +bus_space_tag_t uart_bus_space_mem = &bs_le_tag; +#endif int uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) { - return ((b1->bsh == b2->bsh) ? 1 : 0); } +#ifdef MPC85XX int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { @@ -59,3 +71,67 @@ /* Check the environment. */ return (uart_getenv(devtype, di, class)); } +#else +int +uart_cpu_getdev(int devtype, struct uart_devinfo *di) +{ + char buf[64]; + struct uart_class *class; + phandle_t input, opts; + int error; + + class = &uart_z8530_class; + if (class == NULL) + return (ENXIO); + + if ((opts = OF_finddevice("/options")) == -1) + return (ENXIO); + switch (devtype) { + case UART_DEV_CONSOLE: + if (OF_getprop(opts, "input-device", buf, sizeof(buf)) == -1) + return (ENXIO); + input = OF_finddevice(buf); + if (input == -1) + return (ENXIO); + if (OF_getprop(opts, "output-device", buf, sizeof(buf)) == -1) + return (ENXIO); + if (OF_finddevice(buf) != input) + return (ENXIO); + break; + case UART_DEV_DBGPORT: + if (!getenv_string("hw.uart.dbgport", buf, sizeof(buf))) + return (ENXIO); + input = OF_finddevice(buf); + if (input == -1) + return (ENXIO); + break; + default: + return (EINVAL); + } + + if (OF_getprop(input, "device_type", buf, sizeof(buf)) == -1) + return (ENXIO); + if (strcmp(buf, "serial") != 0) + return (ENXIO); + if (OF_getprop(input, "name", buf, sizeof(buf)) == -1) + return (ENXIO); + if (strcmp(buf, "ch-a")) + return (ENXIO); + + error = OF_decode_addr(input, 0, &di->bas.bst, &di->bas.bsh); + if (error) + return (error); + + di->ops = uart_getops(class); + + di->bas.rclk = 230400; + di->bas.chan = 1; + di->bas.regshft = 4; + + di->baudrate = 0; + di->databits = 8; + di->stopbits = 1; + di->parity = UART_PARITY_NONE; + return (0); +} +#endif