at91_common.c revision 269958
1269958Simp#include <sys/cdefs.h> 2269958Simp__FBSDID("$FreeBSD: head/sys/arm/at91/at91_common.c 269958 2014-08-14 04:21:20Z imp $"); 3269958Simp 4269958Simp#define _ARM32_BUS_DMA_PRIVATE 5269958Simp#include <sys/param.h> 6269958Simp#include <sys/systm.h> 7269958Simp#include <vm/vm.h> 8269958Simp#include <machine/devmap.h> 9269958Simp#include <machine/machdep.h> 10269958Simp#include <arm/at91/at91var.h> 11269958Simp#include <arm/at91/at91soc.h> 12269958Simp#include <arm/at91/at91_aicreg.h> 13269958Simp#include <dev/fdt/fdt_common.h> 14269958Simp#include <dev/ofw/openfirm.h> 15269958Simp#include <machine/fdt.h> 16269958Simp 17269958Simpextern const struct arm_devmap_entry at91_devmap[]; 18269958Simpextern struct bus_space at91_bs_tag; 19269958Simpbus_space_tag_t fdtbus_bs_tag = &at91_bs_tag; 20269958Simp 21269958Simpstruct fdt_fixup_entry fdt_fixup_table[] = { 22269958Simp { NULL, NULL } 23269958Simp}; 24269958Simp 25269958Simpstatic int 26269958Simpfdt_aic_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig, 27269958Simp int *pol) 28269958Simp{ 29269958Simp int offset; 30269958Simp 31269958Simp if (fdt_is_compatible(node, "atmel,at91rm9200-aic")) 32269958Simp offset = 0; 33269958Simp else 34269958Simp return (ENXIO); 35269958Simp 36269958Simp *interrupt = fdt32_to_cpu(intr[0]) + offset; 37269958Simp *trig = INTR_TRIGGER_CONFORM; 38269958Simp *pol = INTR_POLARITY_CONFORM; 39269958Simp 40269958Simp return (0); 41269958Simp} 42269958Simp 43269958Simpfdt_pic_decode_t fdt_pic_table[] = { 44269958Simp &fdt_aic_decode_ic, 45269958Simp NULL 46269958Simp}; 47269958Simp 48269958Simpstatic void 49269958Simpat91_eoi(void *unused) 50269958Simp{ 51269958Simp uint32_t *eoicr = (uint32_t *)(0xdffff000 + IC_EOICR); 52269958Simp 53269958Simp *eoicr = 0; 54269958Simp} 55269958Simp 56269958Simp 57269958Simpvm_offset_t 58269958Simpinitarm_lastaddr(void) 59269958Simp{ 60269958Simp 61269958Simp return (arm_devmap_lastaddr()); 62269958Simp} 63269958Simp 64269958Simpvoid 65269958Simpinitarm_early_init(void) 66269958Simp{ 67269958Simp 68269958Simp arm_post_filter = at91_eoi; 69269958Simp at91_soc_id(); 70269958Simp arm_devmap_register_table(at91_devmap); 71269958Simp} 72269958Simp 73269958Simpint 74269958Simpinitarm_devmap_init(void) 75269958Simp{ 76269958Simp 77269958Simp// arm_devmap_add_entry(0xfff00000, 0x00100000); /* 1MB - uart, aic and timers*/ 78269958Simp 79269958Simp return (0); 80269958Simp} 81269958Simp 82269958Simpvoid 83269958Simpinitarm_gpio_init(void) 84269958Simp{ 85269958Simp} 86269958Simp 87269958Simpvoid 88269958Simpinitarm_late_init(void) 89269958Simp{ 90269958Simp} 91