Date: Thu, 7 Aug 2014 07:41:57 +0000 (UTC) From: Andrew Turner <andrew@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269658 - in projects/arm64/sys: arm64/arm64 arm64/conf conf dev/uart Message-ID: <53e32dc6.5f6a.6b2a0642@svn.freebsd.org>
index | next in thread | raw e-mail
Author: andrew Date: Thu Aug 7 07:41:56 2014 New Revision: 269658 URL: http://svnweb.freebsd.org/changeset/base/269658 Log: Add support for the pl011 uart on the foundation model Modified: projects/arm64/sys/arm64/arm64/bus_machdep.c projects/arm64/sys/arm64/arm64/trap.c projects/arm64/sys/arm64/conf/GENERIC projects/arm64/sys/conf/files.arm64 projects/arm64/sys/dev/uart/uart_bus_fdt.c projects/arm64/sys/dev/uart/uart_cpu_fdt.c Modified: projects/arm64/sys/arm64/arm64/bus_machdep.c ============================================================================== --- projects/arm64/sys/arm64/arm64/bus_machdep.c Thu Aug 7 07:41:51 2014 (r269657) +++ projects/arm64/sys/arm64/arm64/bus_machdep.c Thu Aug 7 07:41:56 2014 (r269658) @@ -25,6 +25,8 @@ * */ +#include "opt_platform.h" + #include <sys/param.h> __FBSDID("$FreeBSD$"); @@ -163,3 +165,7 @@ struct bus_space memmap_bus = { .bs_wr_4_s = NULL, .bs_wr_8_s = NULL, }; + +#ifdef FDT +bus_space_tag_t fdtbus_bs_tag = &memmap_bus; +#endif Modified: projects/arm64/sys/arm64/arm64/trap.c ============================================================================== --- projects/arm64/sys/arm64/arm64/trap.c Thu Aug 7 07:41:51 2014 (r269657) +++ projects/arm64/sys/arm64/arm64/trap.c Thu Aug 7 07:41:56 2014 (r269658) @@ -46,6 +46,7 @@ void do_el1h_sync(struct trapframe *fram { uint32_t exception; uint64_t esr; + u_int reg; /* Read the esr register to get the exception details */ __asm __volatile("mrs %x0, esr_el1" : "=&r"(esr)); @@ -55,7 +56,14 @@ void do_el1h_sync(struct trapframe *fram exception = (esr >> 26) & 0x3f; printf("In do_el1h_sync %llx %llx %x\n", frame->tf_elr, esr, exception); + + for (reg = 0; reg < 31; reg++) { + printf("x%d: %llx\n", reg, frame->tf_x[reg]); + } switch(exception) { + case 0x25: + panic("Data abort at %#llx", frame->tf_elr); + break; case 0x3c: printf("Breakpoint %u\n", (uint32_t)(esr & 0xffffff)); break; Modified: projects/arm64/sys/arm64/conf/GENERIC ============================================================================== --- projects/arm64/sys/arm64/conf/GENERIC Thu Aug 7 07:41:51 2014 (r269657) +++ projects/arm64/sys/arm64/conf/GENERIC Thu Aug 7 07:41:56 2014 (r269658) @@ -82,7 +82,8 @@ options MALLOC_DEBUG_MAXZONES=8 # Separ options EARLY_PRINTF # Serial (COM) ports -#device uart # Generic UART driver +device uart # Generic UART driver +device pl011 # Pseudo devices. device loop # Network loopback Modified: projects/arm64/sys/conf/files.arm64 ============================================================================== --- projects/arm64/sys/conf/files.arm64 Thu Aug 7 07:41:51 2014 (r269657) +++ projects/arm64/sys/conf/files.arm64 Thu Aug 7 07:41:56 2014 (r269658) @@ -29,6 +29,9 @@ arm64/arm64/trap.c standard arm64/arm64/uio_machdep.c standard arm64/arm64/vm_machdep.c standard dev/fdt/fdt_arm64.c optional fdt +dev/uart/uart_bus_fdt.c optional uart fdt +dev/uart/uart_cpu_fdt.c optional uart fdt +dev/uart/uart_dev_pl011.c optional uart pl011 kern/kern_clocksource.c standard kern/subr_dummy_vdso_tc.c standard libkern/bcmp.c standard Modified: projects/arm64/sys/dev/uart/uart_bus_fdt.c ============================================================================== --- projects/arm64/sys/dev/uart/uart_bus_fdt.c Thu Aug 7 07:41:51 2014 (r269657) +++ projects/arm64/sys/dev/uart/uart_bus_fdt.c Thu Aug 7 07:41:56 2014 (r269658) @@ -120,9 +120,11 @@ uart_fdt_get_shift(phandle_t node, pcell { pcell_t shift; + /* TODO: Not all uart bindings need reg-shift */ if ((OF_getprop(node, "reg-shift", &shift, sizeof(shift))) <= 0) - shift = 0; - *cell = fdt32_to_cpu(shift); + *cell = 2; + else + *cell = fdt32_to_cpu(shift); return (0); } Modified: projects/arm64/sys/dev/uart/uart_cpu_fdt.c ============================================================================== --- projects/arm64/sys/dev/uart/uart_cpu_fdt.c Thu Aug 7 07:41:51 2014 (r269657) +++ projects/arm64/sys/dev/uart/uart_cpu_fdt.c Thu Aug 7 07:41:56 2014 (r269658) @@ -42,7 +42,7 @@ __FBSDID("$FreeBSD$"); #include <vm/pmap.h> #include <machine/bus.h> -#include <machine/fdt.h> +//#include <machine/fdt.h> #include <dev/fdt/fdt_common.h> #include <dev/ofw/ofw_bus.h> @@ -51,6 +51,8 @@ __FBSDID("$FreeBSD$"); #include <dev/uart/uart_bus.h> #include <dev/uart/uart_cpu.h> +extern bus_space_tag_t fdtbus_bs_tag; + /* * UART console routines. */ @@ -83,9 +85,11 @@ uart_fdt_get_shift(phandle_t node, pcell { pcell_t shift; + /* TODO: Not all uart bindings need reg-shift */ if ((OF_getprop(node, "reg-shift", &shift, sizeof(shift))) <= 0) - shift = 0; - *cell = fdt32_to_cpu(shift); + *cell = 2; + else + *cell = fdt32_to_cpu(shift); return (0); } @@ -195,6 +199,8 @@ uart_cpu_getdev(int devtype, struct uart if (err) pbase = 0; + /* TODO: fdt_get_range to work with the Foundation Models dts */ + pbase = 0x1c000000; start += pbase; return (bus_space_map(di->bas.bst, start, size, 0, &di->bas.bsh));help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?53e32dc6.5f6a.6b2a0642>
