11b1a53cfSOleksandr Tymoshenko /*- 21b1a53cfSOleksandr Tymoshenko * Copyright (c) 2012 Oleksandr Tymoshenko. 31b1a53cfSOleksandr Tymoshenko * Copyright (c) 1994-1998 Mark Brinicombe. 41b1a53cfSOleksandr Tymoshenko * Copyright (c) 1994 Brini. 51b1a53cfSOleksandr Tymoshenko * All rights reserved. 61b1a53cfSOleksandr Tymoshenko * 71b1a53cfSOleksandr Tymoshenko * This code is derived from software written for Brini by Mark Brinicombe 81b1a53cfSOleksandr Tymoshenko * 91b1a53cfSOleksandr Tymoshenko * Redistribution and use in source and binary forms, with or without 101b1a53cfSOleksandr Tymoshenko * modification, are permitted provided that the following conditions 111b1a53cfSOleksandr Tymoshenko * are met: 121b1a53cfSOleksandr Tymoshenko * 1. Redistributions of source code must retain the above copyright 131b1a53cfSOleksandr Tymoshenko * notice, this list of conditions and the following disclaimer. 141b1a53cfSOleksandr Tymoshenko * 2. Redistributions in binary form must reproduce the above copyright 151b1a53cfSOleksandr Tymoshenko * notice, this list of conditions and the following disclaimer in the 161b1a53cfSOleksandr Tymoshenko * documentation and/or other materials provided with the distribution. 171b1a53cfSOleksandr Tymoshenko * 3. All advertising materials mentioning features or use of this software 181b1a53cfSOleksandr Tymoshenko * must display the following acknowledgement: 191b1a53cfSOleksandr Tymoshenko * This product includes software developed by Brini. 201b1a53cfSOleksandr Tymoshenko * 4. The name of the company nor the name of the author may be used to 211b1a53cfSOleksandr Tymoshenko * endorse or promote products derived from this software without specific 221b1a53cfSOleksandr Tymoshenko * prior written permission. 231b1a53cfSOleksandr Tymoshenko * 241b1a53cfSOleksandr Tymoshenko * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED 251b1a53cfSOleksandr Tymoshenko * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 261b1a53cfSOleksandr Tymoshenko * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 271b1a53cfSOleksandr Tymoshenko * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 281b1a53cfSOleksandr Tymoshenko * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 291b1a53cfSOleksandr Tymoshenko * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 301b1a53cfSOleksandr Tymoshenko * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 311b1a53cfSOleksandr Tymoshenko * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 321b1a53cfSOleksandr Tymoshenko * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 331b1a53cfSOleksandr Tymoshenko * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 341b1a53cfSOleksandr Tymoshenko * SUCH DAMAGE. 351b1a53cfSOleksandr Tymoshenko * 361b1a53cfSOleksandr Tymoshenko * from: FreeBSD: //depot/projects/arm/src/sys/arm/at91/kb920x_machdep.c, rev 45 371b1a53cfSOleksandr Tymoshenko */ 381b1a53cfSOleksandr Tymoshenko 391b1a53cfSOleksandr Tymoshenko #include "opt_ddb.h" 401b1a53cfSOleksandr Tymoshenko #include "opt_platform.h" 411b1a53cfSOleksandr Tymoshenko #include "opt_global.h" 421b1a53cfSOleksandr Tymoshenko 431b1a53cfSOleksandr Tymoshenko #include <sys/cdefs.h> 441b1a53cfSOleksandr Tymoshenko __FBSDID("$FreeBSD$"); 451b1a53cfSOleksandr Tymoshenko 461b1a53cfSOleksandr Tymoshenko #define _ARM32_BUS_DMA_PRIVATE 471b1a53cfSOleksandr Tymoshenko #include <sys/param.h> 481b1a53cfSOleksandr Tymoshenko #include <sys/systm.h> 491b1a53cfSOleksandr Tymoshenko #include <sys/bus.h> 501b1a53cfSOleksandr Tymoshenko 511b1a53cfSOleksandr Tymoshenko #include <vm/vm.h> 521b1a53cfSOleksandr Tymoshenko #include <vm/pmap.h> 53*7bf9ab53SAndrew Turner 541b1a53cfSOleksandr Tymoshenko #include <machine/bus.h> 55*7bf9ab53SAndrew Turner #include <machine/frame.h> /* For trapframe_t, used in <machine/machdep.h> */ 56*7bf9ab53SAndrew Turner #include <machine/machdep.h> 57*7bf9ab53SAndrew Turner #include <machine/pmap.h> 58*7bf9ab53SAndrew Turner 59*7bf9ab53SAndrew Turner #include <dev/fdt/fdt_common.h> 601b1a53cfSOleksandr Tymoshenko 611b1a53cfSOleksandr Tymoshenko #include <arm/broadcom/bcm2835/bcm2835_wdog.h> 621b1a53cfSOleksandr Tymoshenko 631b1a53cfSOleksandr Tymoshenko /* Start of address space used for bootstrap map */ 641b1a53cfSOleksandr Tymoshenko #define DEVMAP_BOOTSTRAP_MAP_START 0xE0000000 651b1a53cfSOleksandr Tymoshenko 661f008b99SAndrew Turner vm_offset_t 671f008b99SAndrew Turner initarm_lastaddr(void) 681f008b99SAndrew Turner { 691f008b99SAndrew Turner 701f008b99SAndrew Turner return (DEVMAP_BOOTSTRAP_MAP_START - ARM_NOCACHE_KVA_SIZE); 711f008b99SAndrew Turner } 721f008b99SAndrew Turner 731f008b99SAndrew Turner void 741f008b99SAndrew Turner initarm_gpio_init(void) 751f008b99SAndrew Turner { 761f008b99SAndrew Turner } 771f008b99SAndrew Turner 781f008b99SAndrew Turner void 791f008b99SAndrew Turner initarm_late_init(void) 801f008b99SAndrew Turner { 811f008b99SAndrew Turner } 821f008b99SAndrew Turner 831b1a53cfSOleksandr Tymoshenko #define FDT_DEVMAP_MAX (2) // FIXME 841b1a53cfSOleksandr Tymoshenko static struct pmap_devmap fdt_devmap[FDT_DEVMAP_MAX] = { 851b1a53cfSOleksandr Tymoshenko { 0, 0, 0, 0, 0, } 861b1a53cfSOleksandr Tymoshenko }; 871b1a53cfSOleksandr Tymoshenko 881b1a53cfSOleksandr Tymoshenko 891b1a53cfSOleksandr Tymoshenko /* 901b1a53cfSOleksandr Tymoshenko * Construct pmap_devmap[] with DT-derived config data. 911b1a53cfSOleksandr Tymoshenko */ 92*7bf9ab53SAndrew Turner int 931b1a53cfSOleksandr Tymoshenko platform_devmap_init(void) 941b1a53cfSOleksandr Tymoshenko { 951b1a53cfSOleksandr Tymoshenko int i = 0; 961b1a53cfSOleksandr Tymoshenko 971b1a53cfSOleksandr Tymoshenko fdt_devmap[i].pd_va = 0xf2000000; 981b1a53cfSOleksandr Tymoshenko fdt_devmap[i].pd_pa = 0x20000000; 991b1a53cfSOleksandr Tymoshenko fdt_devmap[i].pd_size = 0x01000000; /* 1 MB */ 1001b1a53cfSOleksandr Tymoshenko fdt_devmap[i].pd_prot = VM_PROT_READ | VM_PROT_WRITE; 1011b1a53cfSOleksandr Tymoshenko fdt_devmap[i].pd_cache = PTE_DEVICE; 1021b1a53cfSOleksandr Tymoshenko i++; 1031b1a53cfSOleksandr Tymoshenko 1041b1a53cfSOleksandr Tymoshenko pmap_devmap_bootstrap_table = &fdt_devmap[0]; 1051b1a53cfSOleksandr Tymoshenko return (0); 1061b1a53cfSOleksandr Tymoshenko } 1071b1a53cfSOleksandr Tymoshenko 1081b1a53cfSOleksandr Tymoshenko struct arm32_dma_range * 1091b1a53cfSOleksandr Tymoshenko bus_dma_get_range(void) 1101b1a53cfSOleksandr Tymoshenko { 1111b1a53cfSOleksandr Tymoshenko 1121b1a53cfSOleksandr Tymoshenko return (NULL); 1131b1a53cfSOleksandr Tymoshenko } 1141b1a53cfSOleksandr Tymoshenko 1151b1a53cfSOleksandr Tymoshenko int 1161b1a53cfSOleksandr Tymoshenko bus_dma_get_range_nb(void) 1171b1a53cfSOleksandr Tymoshenko { 1181b1a53cfSOleksandr Tymoshenko 1191b1a53cfSOleksandr Tymoshenko return (0); 1201b1a53cfSOleksandr Tymoshenko } 1211b1a53cfSOleksandr Tymoshenko 1221b1a53cfSOleksandr Tymoshenko void 1231b1a53cfSOleksandr Tymoshenko cpu_reset() 1241b1a53cfSOleksandr Tymoshenko { 1251b1a53cfSOleksandr Tymoshenko bcmwd_watchdog_reset(); 1261b1a53cfSOleksandr Tymoshenko while (1); 1271b1a53cfSOleksandr Tymoshenko } 128*7bf9ab53SAndrew Turner 129