Deal with bus addresses better. Switch the DMA bus address base to the cache coherent range - not that anything uses it yet.diff -r1.12 -r1.13 src/sys/arch/arm/broadcom/bcm2835_obio.c
(skrll)
--- src/sys/arch/arm/broadcom/Attic/bcm2835_obio.c 2013/01/25 00:04:06 1.12
+++ src/sys/arch/arm/broadcom/Attic/bcm2835_obio.c 2013/01/26 08:01:49 1.13
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: bcm2835_obio.c,v 1.12 2013/01/25 00:04:06 jmcneill Exp $ */ | 1 | /* $NetBSD: bcm2835_obio.c,v 1.13 2013/01/26 08:01:49 skrll Exp $ */ | |
2 | 2 | |||
3 | /*- | 3 | /*- | |
4 | * Copyright (c) 2012 The NetBSD Foundation, Inc. | 4 | * Copyright (c) 2012 The NetBSD Foundation, Inc. | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * This code is derived from software contributed to The NetBSD Foundation | 7 | * This code is derived from software contributed to The NetBSD Foundation | |
8 | * by Nick Hudson | 8 | * by Nick Hudson | |
9 | * | 9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | 10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | 11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | 12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | 13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | 14 | * notice, this list of conditions and the following disclaimer. | |
@@ -20,27 +20,27 @@ | @@ -20,27 +20,27 @@ | |||
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | 20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | |
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | 22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | |
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
29 | * POSSIBILITY OF SUCH DAMAGE. | 29 | * POSSIBILITY OF SUCH DAMAGE. | |
30 | */ | 30 | */ | |
31 | 31 | |||
32 | #include <sys/cdefs.h> | 32 | #include <sys/cdefs.h> | |
33 | __KERNEL_RCSID(0, "$NetBSD: bcm2835_obio.c,v 1.12 2013/01/25 00:04:06 jmcneill Exp $"); | 33 | __KERNEL_RCSID(0, "$NetBSD: bcm2835_obio.c,v 1.13 2013/01/26 08:01:49 skrll Exp $"); | |
34 | 34 | |||
35 | #include "locators.h" | 35 | #include "locators.h" | |
36 | #include "obio.h" | 36 | #include "obio.h" | |
37 | 37 | |||
38 | #include <sys/param.h> | 38 | #include <sys/param.h> | |
39 | #include <sys/systm.h> | 39 | #include <sys/systm.h> | |
40 | #include <sys/device.h> | 40 | #include <sys/device.h> | |
41 | 41 | |||
42 | #include <sys/bus.h> | 42 | #include <sys/bus.h> | |
43 | 43 | |||
44 | #include <arm/broadcom/bcm2835reg.h> | 44 | #include <arm/broadcom/bcm2835reg.h> | |
45 | #include <arm/broadcom/bcm_amba.h> | 45 | #include <arm/broadcom/bcm_amba.h> | |
46 | 46 | |||
@@ -171,27 +171,27 @@ obio_attach(device_t parent, device_t se | @@ -171,27 +171,27 @@ obio_attach(device_t parent, device_t se | |||
171 | const struct ambadev_locators *ad = bcm2835_ambadev_locs; | 171 | const struct ambadev_locators *ad = bcm2835_ambadev_locs; | |
172 | struct amba_attach_args aaa; | 172 | struct amba_attach_args aaa; | |
173 | int locs[OBIOCF_NLOCS]; | 173 | int locs[OBIOCF_NLOCS]; | |
174 | 174 | |||
175 | if (obio_attached) | 175 | if (obio_attached) | |
176 | return; | 176 | return; | |
177 | 177 | |||
178 | obio_attached = true; | 178 | obio_attached = true; | |
179 | 179 | |||
180 | sc->sc_dev = self; | 180 | sc->sc_dev = self; | |
181 | sc->sc_dmat = &bcm2835_bus_dma_tag; | 181 | sc->sc_dmat = &bcm2835_bus_dma_tag; | |
182 | 182 | |||
183 | sc->sc_dmarange.dr_sysbase = 0; | 183 | sc->sc_dmarange.dr_sysbase = 0; | |
184 | sc->sc_dmarange.dr_busbase = 0xc0000000; /* 0x40000000 if L2 */ | 184 | sc->sc_dmarange.dr_busbase = BCM2835_BUSADDR_CACHE_COHERENT; | |
185 | sc->sc_dmarange.dr_len = physmem * PAGE_SIZE; | 185 | sc->sc_dmarange.dr_len = physmem * PAGE_SIZE; | |
186 | bcm2835_bus_dma_tag._ranges = &sc->sc_dmarange; | 186 | bcm2835_bus_dma_tag._ranges = &sc->sc_dmarange; | |
187 | bcm2835_bus_dma_tag._nranges = 1; | 187 | bcm2835_bus_dma_tag._nranges = 1; | |
188 | 188 | |||
189 | aprint_normal("\n"); | 189 | aprint_normal("\n"); | |
190 | 190 | |||
191 | /* Set up the attach args. */ | 191 | /* Set up the attach args. */ | |
192 | aaa.aaa_iot = &bcm2835_bs_tag; | 192 | aaa.aaa_iot = &bcm2835_bs_tag; | |
193 | aaa.aaa_dmat = sc->sc_dmat; | 193 | aaa.aaa_dmat = sc->sc_dmat; | |
194 | 194 | |||
195 | for (; ad->ad_name != NULL; ad++) { | 195 | for (; ad->ad_name != NULL; ad++) { | |
196 | aprint_debug("dev=%s[%u], addr=%lx:+%lx\n", | 196 | aprint_debug("dev=%s[%u], addr=%lx:+%lx\n", | |
197 | ad->ad_name, ad->ad_instance, ad->ad_addr, ad->ad_size); | 197 | ad->ad_name, ad->ad_instance, ad->ad_addr, ad->ad_size); |
--- src/sys/arch/arm/broadcom/Attic/bcm2835_space.c 2013/01/23 16:51:14 1.4
+++ src/sys/arch/arm/broadcom/Attic/bcm2835_space.c 2013/01/26 08:01:49 1.5
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: bcm2835_space.c,v 1.4 2013/01/23 16:51:14 macallan Exp $ */ | 1 | /* $NetBSD: bcm2835_space.c,v 1.5 2013/01/26 08:01:49 skrll Exp $ */ | |
2 | 2 | |||
3 | /*- | 3 | /*- | |
4 | * Copyright (c) 2012 The NetBSD Foundation, Inc. | 4 | * Copyright (c) 2012 The NetBSD Foundation, Inc. | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * This code is derived from software contributed to The NetBSD Foundation | 7 | * This code is derived from software contributed to The NetBSD Foundation | |
8 | * by Nick Hudson | 8 | * by Nick Hudson | |
9 | * | 9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | 10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | 11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | 12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | 13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | 14 | * notice, this list of conditions and the following disclaimer. | |
@@ -21,35 +21,37 @@ | @@ -21,35 +21,37 @@ | |||
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | 22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | |
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
29 | * POSSIBILITY OF SUCH DAMAGE. | 29 | * POSSIBILITY OF SUCH DAMAGE. | |
30 | */ | 30 | */ | |
31 | 31 | |||
32 | 32 | |||
33 | #include <sys/cdefs.h> | 33 | #include <sys/cdefs.h> | |
34 | __KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.4 2013/01/23 16:51:14 macallan Exp $"); | 34 | __KERNEL_RCSID(0, "$NetBSD: bcm2835_space.c,v 1.5 2013/01/26 08:01:49 skrll Exp $"); | |
35 | 35 | |||
36 | #include <sys/param.h> | 36 | #include <sys/param.h> | |
37 | #include <sys/systm.h> | 37 | #include <sys/systm.h> | |
38 | 38 | |||
39 | #include <uvm/uvm_extern.h> | 39 | #include <uvm/uvm_extern.h> | |
40 | 40 | |||
41 | #include <sys/bus.h> | 41 | #include <sys/bus.h> | |
42 | 42 | |||
43 | #include <arm/broadcom/bcm2835reg.h> | |||
44 | ||||
43 | /* Prototypes for all the bus_space structure functions */ | 45 | /* Prototypes for all the bus_space structure functions */ | |
44 | bs_protos(bcm2835); | 46 | bs_protos(bcm2835); | |
45 | bs_protos(bcm2835_a4x); | 47 | bs_protos(bcm2835_a4x); | |
46 | bs_protos(generic); | 48 | bs_protos(generic); | |
47 | bs_protos(generic_armv4); | 49 | bs_protos(generic_armv4); | |
48 | bs_protos(a4x); | 50 | bs_protos(a4x); | |
49 | bs_protos(bs_notimpl); | 51 | bs_protos(bs_notimpl); | |
50 | 52 | |||
51 | struct bus_space bcm2835_bs_tag = { | 53 | struct bus_space bcm2835_bs_tag = { | |
52 | /* cookie */ | 54 | /* cookie */ | |
53 | (void *) 0, | 55 | (void *) 0, | |
54 | 56 | |||
55 | /* mapping/unmapping */ | 57 | /* mapping/unmapping */ | |
@@ -270,51 +272,54 @@ struct bus_space bcm2835_a4x_bs_tag = { | @@ -270,51 +272,54 @@ struct bus_space bcm2835_a4x_bs_tag = { | |||
270 | bs_notimpl_bs_wm_8, | 272 | bs_notimpl_bs_wm_8, | |
271 | 273 | |||
272 | /* write region */ | 274 | /* write region */ | |
273 | generic_bs_wr_1, | 275 | generic_bs_wr_1, | |
274 | generic_armv4_bs_wr_2, | 276 | generic_armv4_bs_wr_2, | |
275 | generic_bs_wr_4, | 277 | generic_bs_wr_4, | |
276 | bs_notimpl_bs_wr_8, | 278 | bs_notimpl_bs_wr_8, | |
277 | #endif | 279 | #endif | |
278 | 280 | |||
279 | }; | 281 | }; | |
280 | 282 | |||
281 | 283 | |||
282 | int | 284 | int | |
283 | bcm2835_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flag, | 285 | bcm2835_bs_map(void *t, bus_addr_t ba, bus_size_t size, int flag, | |
284 | bus_space_handle_t *bshp) | 286 | bus_space_handle_t *bshp) | |
285 | { | 287 | { | |
286 | u_long startpa, endpa, pa; | 288 | u_long startpa, endpa, pa; | |
287 | vaddr_t va; | 289 | vaddr_t va; | |
288 | const struct pmap_devmap *pd; | 290 | const struct pmap_devmap *pd; | |
289 | int pmap_flags; | 291 | int pmap_flags; | |
290 | 292 | |||
291 | if ((pd = pmap_devmap_find_pa(bpa, size)) != NULL) { | 293 | pa = ba & ~BCM2835_BUSADDR_CACHE_MASK; | |
294 | ||||
295 | /* this does device addresses */ | |||
296 | if ((pd = pmap_devmap_find_pa(pa, size)) != NULL) { | |||
292 | /* Device was statically mapped. */ | 297 | /* Device was statically mapped. */ | |
293 | *bshp = pd->pd_va + (bpa - pd->pd_pa); | 298 | *bshp = pd->pd_va + (pa - pd->pd_pa); | |
294 | return 0; | 299 | return 0; | |
295 | } | 300 | } | |
296 | 301 | |||
297 | startpa = trunc_page(bpa); | 302 | startpa = trunc_page(pa); | |
298 | endpa = round_page(bpa + size); | 303 | endpa = round_page(pa + size); | |
299 | 304 | |||
300 | /* XXX use extent manager to check duplicate mapping */ | 305 | /* XXX use extent manager to check duplicate mapping */ | |
301 | 306 | |||
302 | va = uvm_km_alloc(kernel_map, endpa - startpa, 0, | 307 | va = uvm_km_alloc(kernel_map, endpa - startpa, 0, | |
303 | UVM_KMF_VAONLY | UVM_KMF_NOWAIT); | 308 | UVM_KMF_VAONLY | UVM_KMF_NOWAIT); | |
304 | if (!va) | 309 | if (!va) | |
305 | return ENOMEM; | 310 | return ENOMEM; | |
306 | 311 | |||
307 | *bshp = (bus_space_handle_t)(va + (bpa - startpa)); | 312 | *bshp = (bus_space_handle_t)(va + (pa - startpa)); | |
308 | 313 | |||
309 | pmap_flags = (flag & BUS_SPACE_MAP_CACHEABLE) ? 0 : PMAP_NOCACHE; | 314 | pmap_flags = (flag & BUS_SPACE_MAP_CACHEABLE) ? 0 : PMAP_NOCACHE; | |
310 | for (pa = startpa; pa < endpa; pa += PAGE_SIZE, va += PAGE_SIZE) { | 315 | for (pa = startpa; pa < endpa; pa += PAGE_SIZE, va += PAGE_SIZE) { | |
311 | pmap_kenter_pa(va, pa, VM_PROT_READ | VM_PROT_WRITE, | 316 | pmap_kenter_pa(va, pa, VM_PROT_READ | VM_PROT_WRITE, | |
312 | pmap_flags); | 317 | pmap_flags); | |
313 | } | 318 | } | |
314 | pmap_update(pmap_kernel()); | 319 | pmap_update(pmap_kernel()); | |
315 | 320 | |||
316 | return 0; | 321 | return 0; | |
317 | } | 322 | } | |
318 | 323 | |||
319 | void | 324 | void | |
320 | bcm2835_bs_unmap(void *t, bus_space_handle_t bsh, bus_size_t size) | 325 | bcm2835_bs_unmap(void *t, bus_space_handle_t bsh, bus_size_t size) | |
@@ -358,34 +363,35 @@ bcm2835_bs_barrier(void *t, bus_space_ha | @@ -358,34 +363,35 @@ bcm2835_bs_barrier(void *t, bus_space_ha | |||
358 | return; | 363 | return; | |
359 | } | 364 | } | |
360 | 365 | |||
361 | } | 366 | } | |
362 | 367 | |||
363 | void * | 368 | void * | |
364 | bcm2835_bs_vaddr(void *t, bus_space_handle_t bsh) | 369 | bcm2835_bs_vaddr(void *t, bus_space_handle_t bsh) | |
365 | { | 370 | { | |
366 | 371 | |||
367 | return (void *)bsh; | 372 | return (void *)bsh; | |
368 | } | 373 | } | |
369 | 374 | |||
370 | paddr_t | 375 | paddr_t | |
371 | bcm2835_bs_mmap(void *t, bus_addr_t paddr, off_t offset, int prot, int flags) | 376 | bcm2835_bs_mmap(void *t, bus_addr_t ba, off_t offset, int prot, int flags) | |
372 | { | 377 | { | |
378 | paddr_t pa = ba & ~BCM2835_BUSADDR_CACHE_MASK; | |||
373 | paddr_t bus_flags = 0; | 379 | paddr_t bus_flags = 0; | |
374 | 380 | |||
375 | if (flags & BUS_SPACE_MAP_PREFETCHABLE) | 381 | if (flags & BUS_SPACE_MAP_PREFETCHABLE) | |
376 | bus_flags |= ARM32_MMAP_WRITECOMBINE; | 382 | bus_flags |= ARM32_MMAP_WRITECOMBINE; | |
377 | 383 | |||
378 | return (arm_btop(paddr + offset) | bus_flags); | 384 | return (arm_btop(pa + offset) | bus_flags); | |
379 | } | 385 | } | |
380 | 386 | |||
381 | int | 387 | int | |
382 | bcm2835_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend, | 388 | bcm2835_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend, | |
383 | bus_size_t size, bus_size_t alignment, bus_size_t boundary, int flags, | 389 | bus_size_t size, bus_size_t alignment, bus_size_t boundary, int flags, | |
384 | bus_addr_t *bpap, bus_space_handle_t *bshp) | 390 | bus_addr_t *bpap, bus_space_handle_t *bshp) | |
385 | { | 391 | { | |
386 | 392 | |||
387 | panic("%s(): not implemented\n", __func__); | 393 | panic("%s(): not implemented\n", __func__); | |
388 | } | 394 | } | |
389 | 395 | |||
390 | void | 396 | void | |
391 | bcm2835_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size) | 397 | bcm2835_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size) |
--- src/sys/arch/arm/broadcom/bcm2835reg.h 2013/01/25 00:04:06 1.8
+++ src/sys/arch/arm/broadcom/bcm2835reg.h 2013/01/26 08:01:49 1.9
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: bcm2835reg.h,v 1.8 2013/01/25 00:04:06 jmcneill Exp $ */ | 1 | /* $NetBSD: bcm2835reg.h,v 1.9 2013/01/26 08:01:49 skrll Exp $ */ | |
2 | 2 | |||
3 | /*- | 3 | /*- | |
4 | * Copyright (c) 2012 The NetBSD Foundation, Inc. | 4 | * Copyright (c) 2012 The NetBSD Foundation, Inc. | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * This code is derived from software contributed to The NetBSD Foundation | 7 | * This code is derived from software contributed to The NetBSD Foundation | |
8 | * by Nick Hudson | 8 | * by Nick Hudson | |
9 | * | 9 | * | |
10 | * Redistribution and use in source and binary forms, with or without | 10 | * Redistribution and use in source and binary forms, with or without | |
11 | * modification, are permitted provided that the following conditions | 11 | * modification, are permitted provided that the following conditions | |
12 | * are met: | 12 | * are met: | |
13 | * 1. Redistributions of source code must retain the above copyright | 13 | * 1. Redistributions of source code must retain the above copyright | |
14 | * notice, this list of conditions and the following disclaimer. | 14 | * notice, this list of conditions and the following disclaimer. | |
@@ -67,26 +67,32 @@ | @@ -67,26 +67,32 @@ | |||
67 | #define BCM2835_GPIO_SIZE 0x1000 | 67 | #define BCM2835_GPIO_SIZE 0x1000 | |
68 | #define BCM2835_UART0_SIZE 0x90 | 68 | #define BCM2835_UART0_SIZE 0x90 | |
69 | #define BCM2835_PCM_SIZE 0x1000 | 69 | #define BCM2835_PCM_SIZE 0x1000 | |
70 | #define BCM2835_SPI0_SIZE 0x1000 | 70 | #define BCM2835_SPI0_SIZE 0x1000 | |
71 | #define BCM2835_BSC_SIZE 0x1000 | 71 | #define BCM2835_BSC_SIZE 0x1000 | |
72 | #define BCM2835_AUX_SIZE 0x1000 | 72 | #define BCM2835_AUX_SIZE 0x1000 | |
73 | #define BCM2835_EMMC_SIZE 0x1000 | 73 | #define BCM2835_EMMC_SIZE 0x1000 | |
74 | #define BCM2835_USB_SIZE 0x20000 | 74 | #define BCM2835_USB_SIZE 0x20000 | |
75 | #define BCM2835_DMA15_SIZE 0x100 | 75 | #define BCM2835_DMA15_SIZE 0x100 | |
76 | 76 | |||
77 | #define BCM2835_IOPHYSTOVIRT(a) \ | 77 | #define BCM2835_IOPHYSTOVIRT(a) \ | |
78 | ((0xf0000000 | (((a) & 0xf0000000) >> 4)) + ((a) & ~0xf0000000)) | 78 | ((0xf0000000 | (((a) & 0xf0000000) >> 4)) + ((a) & ~0xf0000000)) | |
79 | 79 | |||
80 | #define BCM2835_BUSADDR_CACHE_MASK 0xc0000000 | |||
81 | #define BCM2835_BUSADDR_CACHE_COHERENT 0x40000000 | |||
82 | #define BCM2835_BUSADDR_CACHE_L1L2 0x00000000 | |||
83 | #define BCM2835_BUSADDR_CACHE_L2ONLY 0x80000000 | |||
84 | #define BCM2835_BUSADDR_CACHE_DIRECT 0xc0000000 | |||
85 | ||||
80 | #define BCM2835_PERIPHERALS_VBASE \ | 86 | #define BCM2835_PERIPHERALS_VBASE \ | |
81 | BCM2835_IOPHYSTOVIRT(BCM2835_PERIPHERALS_BASE) | 87 | BCM2835_IOPHYSTOVIRT(BCM2835_PERIPHERALS_BASE) | |
82 | #define BCM2835_STIMER_VBASE BCM2835_IOPHYSTOVIRT(BCM2835_ST_BASE) | 88 | #define BCM2835_STIMER_VBASE BCM2835_IOPHYSTOVIRT(BCM2835_ST_BASE) | |
83 | #define BCM2835_PM_VBASE BCM2835_IOPHYSTOVIRT(BCM2835_PM_BASE) | 89 | #define BCM2835_PM_VBASE BCM2835_IOPHYSTOVIRT(BCM2835_PM_BASE) | |
84 | #define BCM2835_UART0_VBASE BCM2835_IOPHYSTOVIRT(BCM2835_UART0_BASE) | 90 | #define BCM2835_UART0_VBASE BCM2835_IOPHYSTOVIRT(BCM2835_UART0_BASE) | |
85 | #define BCM2835_EMMC_VBASE BCM2835_IOPHYSTOVIRT(BCM2835_EMMC_BASE) | 91 | #define BCM2835_EMMC_VBASE BCM2835_IOPHYSTOVIRT(BCM2835_EMMC_BASE) | |
86 | 92 | |||
87 | #define BCM2835_ARMICU_BASE (BCM2835_ARM_BASE + 0x0200) | 93 | #define BCM2835_ARMICU_BASE (BCM2835_ARM_BASE + 0x0200) | |
88 | #define BCM2835_ARMICU_SIZE 0x200 | 94 | #define BCM2835_ARMICU_SIZE 0x200 | |
89 | 95 | |||
90 | #define BCM2835_ARMMBOX_BASE (BCM2835_ARM_BASE + 0x0880) | 96 | #define BCM2835_ARMMBOX_BASE (BCM2835_ARM_BASE + 0x0880) | |
91 | #define BCM2835_ARMMBOX_SIZE 0x40 | 97 | #define BCM2835_ARMMBOX_SIZE 0x40 | |
92 | 98 |