1 /* $OpenBSD: omap3.c,v 1.3 2016/07/10 02:55:15 jsg Exp $ */ 2 3 /* 4 * Copyright (c) 2011 Uwe Stuehler <uwe@openbsd.org> 5 * 6 * Permission to use, copy, modify, and distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #include <sys/types.h> 20 #include <sys/param.h> 21 22 #include <machine/bus.h> 23 24 #include <armv7/armv7/armv7var.h> 25 26 #define PRCM_ADDR 0x48004000 27 #define PRCM_SIZE 0x2000 28 29 #define INTC_ADDR 0x48200000 30 #define INTC_SIZE 0x200 31 32 #define GPTIMERx_SIZE 0x100 33 #define GPTIMER1_ADDR 0x48318000 34 #define GPTIMER1_IRQ 37 35 #define GPTIMER2_ADDR 0x49032000 36 #define GPTIMER2_IRQ 38 37 38 #define GPIOx_SIZE 0x1000 39 #define GPIO1_ADDR 0x48310000 40 #define GPIO2_ADDR 0x49050000 41 #define GPIO3_ADDR 0x49052000 42 #define GPIO4_ADDR 0x49054000 43 #define GPIO5_ADDR 0x49056000 44 #define GPIO6_ADDR 0x49058000 45 46 #define GPIO1_IRQ 29 47 #define GPIO2_IRQ 30 48 #define GPIO3_IRQ 31 49 #define GPIO4_IRQ 32 50 #define GPIO5_IRQ 33 51 #define GPIO6_IRQ 34 52 53 #define USBTLL_ADDR 0x48062000 54 #define USBTLL_SIZE 0x1000 55 56 struct armv7_dev omap3_devs[] = { 57 58 /* 59 * Power, Reset and Clock Manager 60 */ 61 62 { .name = "prcm", 63 .unit = 0, 64 .mem = { { PRCM_ADDR, PRCM_SIZE } }, 65 }, 66 67 /* 68 * Interrupt Controller 69 */ 70 71 { .name = "intc", 72 .unit = 0, 73 .mem = { { INTC_ADDR, INTC_SIZE } }, 74 }, 75 76 /* 77 * General Purpose Timers 78 */ 79 80 { .name = "gptimer", 81 .unit = 1, /* XXX see gptimer.c */ 82 .mem = { { GPTIMER1_ADDR, GPTIMERx_SIZE } }, 83 .irq = { GPTIMER1_IRQ } 84 }, 85 86 { .name = "gptimer", 87 .unit = 0, /* XXX see gptimer.c */ 88 .mem = { { GPTIMER2_ADDR, GPTIMERx_SIZE } }, 89 .irq = { GPTIMER2_IRQ } 90 }, 91 92 /* 93 * GPIO 94 */ 95 96 { .name = "omgpio", 97 .unit = 0, 98 .mem = { { GPIO1_ADDR, GPIOx_SIZE } }, 99 .irq = { GPIO1_IRQ } 100 }, 101 102 { .name = "omgpio", 103 .unit = 1, 104 .mem = { { GPIO2_ADDR, GPIOx_SIZE } }, 105 .irq = { GPIO2_IRQ } 106 }, 107 108 { .name = "omgpio", 109 .unit = 2, 110 .mem = { { GPIO3_ADDR, GPIOx_SIZE } }, 111 .irq = { GPIO3_IRQ } 112 }, 113 114 { .name = "omgpio", 115 .unit = 3, 116 .mem = { { GPIO4_ADDR, GPIOx_SIZE } }, 117 .irq = { GPIO4_IRQ } 118 }, 119 120 { .name = "omgpio", 121 .unit = 4, 122 .mem = { { GPIO5_ADDR, GPIOx_SIZE } }, 123 .irq = { GPIO5_IRQ } 124 }, 125 126 { .name = "omgpio", 127 .unit = 5, 128 .mem = { { GPIO6_ADDR, GPIOx_SIZE } }, 129 .irq = { GPIO6_IRQ } 130 }, 131 132 /* 133 * USB 134 */ 135 136 { .name = "omusbtll", 137 .unit = 0, 138 .mem = { { USBTLL_ADDR, USBTLL_SIZE } }, 139 }, 140 141 /* Terminator */ 142 { .name = NULL, 143 .unit = 0, 144 } 145 }; 146 147 void 148 omap3_init(void) 149 { 150 armv7_set_devs(omap3_devs); 151 } 152