diff options
author | raj <raj@FreeBSD.org> | 2008-03-03 17:17:00 +0000 |
---|---|---|
committer | raj <raj@FreeBSD.org> | 2008-03-03 17:17:00 +0000 |
commit | 0757a4afb5d18c5b874cc918eb56d7264456bd20 (patch) | |
tree | b0d8321058cccbf59aa2e7cd69b9283a0663316e /sys/dev/uart/uart_cpu_powerpc.c | |
parent | 05437e53d55e216714c2e1f4a0aa97d4598090b8 (diff) | |
download | FreeBSD-src-0757a4afb5d18c5b874cc918eb56d7264456bd20.zip FreeBSD-src-0757a4afb5d18c5b874cc918eb56d7264456bd20.tar.gz |
Initial support for Freescale PowerQUICC III MPC85xx system-on-chip family.
The PQ3 is a high performance integrated communications processing system
based on the e500 core, which is an embedded RISC processor that implements
the 32-bit Book E definition of the PowerPC architecture. For details refer
to: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC8555E
This port was tested and successfully run on the following members of the PQ3
family: MPC8533, MPC8541, MPC8548, MPC8555.
The following major integrated peripherals are supported:
* On-chip peripherals bus
* OpenPIC interrupt controller
* UART
* Ethernet (TSEC)
* Host/PCI bridge
* QUICC engine (SCC functionality)
This commit brings the main functionality and will be followed by individual
drivers that are logically separate from this base.
Approved by: cognet (mentor)
Obtained from: Juniper, Semihalf
MFp4: e500
Diffstat (limited to 'sys/dev/uart/uart_cpu_powerpc.c')
-rw-r--r-- | sys/dev/uart/uart_cpu_powerpc.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/sys/dev/uart/uart_cpu_powerpc.c b/sys/dev/uart/uart_cpu_powerpc.c index de6af2b..0945970 100644 --- a/sys/dev/uart/uart_cpu_powerpc.c +++ b/sys/dev/uart/uart_cpu_powerpc.c @@ -27,19 +27,28 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_platform.h" + #include <sys/param.h> #include <sys/systm.h> #include <machine/bus.h> +#ifndef MPC85XX #include <dev/ofw/openfirm.h> #include <machine/ofw_machdep.h> +#endif #include <dev/uart/uart.h> #include <dev/uart/uart_cpu.h> +#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) @@ -48,6 +57,22 @@ 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) +{ + struct uart_class *class; + + class = &uart_ns8250_class; + if (class == NULL) + class = &uart_quicc_class; + if (class == NULL) + return (ENXIO); + + /* Check the environment. */ + return (uart_getenv(devtype, di, class)); +} +#else int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { @@ -110,3 +135,4 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di) di->parity = UART_PARITY_NONE; return (0); } +#endif |