Sun Sep 7 15:28:05 2014 UTC ()
DMA channel interrupt names


(skrll)
diff -r1.3 -r1.4 src/sys/arch/arm/broadcom/bcm2835_intr.c

cvs diff -r1.3 -r1.4 src/sys/arch/arm/broadcom/bcm2835_intr.c (expand / switch to unified diff)

--- src/sys/arch/arm/broadcom/bcm2835_intr.c 2013/01/08 12:15:42 1.3
+++ src/sys/arch/arm/broadcom/bcm2835_intr.c 2014/09/07 15:28:05 1.4
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: bcm2835_intr.c,v 1.3 2013/01/08 12:15:42 skrll Exp $ */ 1/* $NetBSD: bcm2835_intr.c,v 1.4 2014/09/07 15:28:05 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_intr.c,v 1.3 2013/01/08 12:15:42 skrll Exp $"); 33__KERNEL_RCSID(0, "$NetBSD: bcm2835_intr.c,v 1.4 2014/09/07 15:28:05 skrll Exp $");
34 34
35#define _INTR_PRIVATE 35#define _INTR_PRIVATE
36 36
37#include <sys/param.h> 37#include <sys/param.h>
38#include <sys/proc.h> 38#include <sys/proc.h>
39#include <sys/device.h> 39#include <sys/device.h>
40 40
41#include <machine/intr.h> 41#include <machine/intr.h>
42#include <sys/bus.h> 42#include <sys/bus.h>
43 43
44#include <arm/pic/picvar.h> 44#include <arm/pic/picvar.h>
45 45
46#include <arm/broadcom/bcm_amba.h> 46#include <arm/broadcom/bcm_amba.h>
@@ -85,30 +85,30 @@ struct bcm2835icu_softc *bcmicu_sc; @@ -85,30 +85,30 @@ struct bcm2835icu_softc *bcmicu_sc;
85#define write_bcm2835reg(o, v) \ 85#define write_bcm2835reg(o, v) \
86 bus_space_write_4(bcmicu_sc->sc_iot, bcmicu_sc->sc_ioh, (o), (v)) 86 bus_space_write_4(bcmicu_sc->sc_iot, bcmicu_sc->sc_ioh, (o), (v))
87 87
88 88
89#define bcm2835_barrier() \ 89#define bcm2835_barrier() \
90 bus_space_barrier(bcmicu_sc->sc_iot, bcmicu_sc->sc_ioh, 0, \ 90 bus_space_barrier(bcmicu_sc->sc_iot, bcmicu_sc->sc_ioh, 0, \
91 BCM2835_ARMICU_SIZE, BUS_SPACE_BARRIER_READ|BUS_SPACE_BARRIER_WRITE) 91 BCM2835_ARMICU_SIZE, BUS_SPACE_BARRIER_READ|BUS_SPACE_BARRIER_WRITE)
92 92
93static const char * const bcm2835_sources[BCM2835_NIRQ] = { 93static const char * const bcm2835_sources[BCM2835_NIRQ] = {
94 "(unused 0)", "(unused 1)", "(unused 2)", "timer3", 94 "(unused 0)", "(unused 1)", "(unused 2)", "timer3",
95 "(unused 4)", "(unused 5)", "(unused 6)", "jpeg", 95 "(unused 4)", "(unused 5)", "(unused 6)", "jpeg",
96 "(unused 8)", "usb", "(unused 10)", "(unused 11)", 96 "(unused 8)", "usb", "(unused 10)", "(unused 11)",
97 "(unused 12)", "(unused 13)", "(unused 14)", "(unused 15)", 97 "(unused 12)", "(unused 13)", "(unused 14)", "(unused 15)",
98 "(unused 16)", "(unused 17)", "dma2", "dma3", 98 "dma0", "dma1", "dma2", "dma3",
99 "(unused 20)", "(unused 21)", "(unused 22)", "(unused 23)", 99 "dma4", "dma5", "dma6", "dma7",
100 "(unused 24)", "(unused 25)", "(unused 26)", "(unused 27)", 100 "dma8", "dma9", "dma10", "dma11",
101 "(unused 28)", "aux", "(unused 30)", "(unused 31)", 101 "dma12", "aux", "(unused 30)", "(unused 31)",
102 "(unused 32)", "(unused 33)", "(unused 34)", "(unused 35)", 102 "(unused 32)", "(unused 33)", "(unused 34)", "(unused 35)",
103 "(unused 36)", "(unused 37)", "(unused 38)", "(unused 39)", 103 "(unused 36)", "(unused 37)", "(unused 38)", "(unused 39)",
104 "(unused 40)", "(unused 41)", "(unused 42)", "i2c spl slv", 104 "(unused 40)", "(unused 41)", "(unused 42)", "i2c spl slv",
105 "(unused 44)", "pwa0", "pwa1", "(unused 47)", 105 "(unused 44)", "pwa0", "pwa1", "(unused 47)",
106 "smi", "gpio[0]", "gpio[1]", "gpio[2]", 106 "smi", "gpio[0]", "gpio[1]", "gpio[2]",
107 "gpio[3]", "i2c", "spi", "pcm", 107 "gpio[3]", "i2c", "spi", "pcm",
108 "sdio", "uart", "(unused 58)", "(unused 59)", 108 "sdio", "uart", "(unused 58)", "(unused 59)",
109 "(unused 60)", "(unused 61)", "emmc", "(unused 63)", 109 "(unused 60)", "(unused 61)", "emmc", "(unused 63)",
110 "Timer", "Mailbox", "Doorbell0", "Doorbell1", 110 "Timer", "Mailbox", "Doorbell0", "Doorbell1",
111 "GPU0 Halted", "GPU1 Halted", "Illegal #1", "Illegal #0" 111 "GPU0 Halted", "GPU1 Halted", "Illegal #1", "Illegal #0"
112}; 112};
113 113
114#define BCM2835_INTBIT_PENDING1 __BIT(8) 114#define BCM2835_INTBIT_PENDING1 __BIT(8)
@@ -162,27 +162,26 @@ bcm2835_irq_handler(void *frame) @@ -162,27 +162,26 @@ bcm2835_irq_handler(void *frame)
162 162
163 ci->ci_data.cpu_nintr++; 163 ci->ci_data.cpu_nintr++;
164 164
165 bcm2835_barrier(); 165 bcm2835_barrier();
166 ipl_mask = bcm2835_pic_find_pending_irqs(&bcm2835_pic); 166 ipl_mask = bcm2835_pic_find_pending_irqs(&bcm2835_pic);
167 167
168 /* 168 /*
169 * Record the pending_ipls and deliver them if we can. 169 * Record the pending_ipls and deliver them if we can.
170 */ 170 */
171 if ((ipl_mask & ~oldipl_mask) > oldipl_mask) 171 if ((ipl_mask & ~oldipl_mask) > oldipl_mask)
172 pic_do_pending_ints(I32_bit, oldipl, frame); 172 pic_do_pending_ints(I32_bit, oldipl, frame);
173} 173}
174 174
175 
176static void 175static void
177bcm2835_pic_unblock_irqs(struct pic_softc *pic, size_t irqbase, 176bcm2835_pic_unblock_irqs(struct pic_softc *pic, size_t irqbase,
178 uint32_t irq_mask) 177 uint32_t irq_mask)
179{ 178{
180 179
181 write_bcm2835reg(BCM2835_INTC_ENABLEBASE + (irqbase >> 3), irq_mask); 180 write_bcm2835reg(BCM2835_INTC_ENABLEBASE + (irqbase >> 3), irq_mask);
182 bcm2835_barrier(); 181 bcm2835_barrier();
183} 182}
184 183
185static void 184static void
186bcm2835_pic_block_irqs(struct pic_softc *pic, size_t irqbase, 185bcm2835_pic_block_irqs(struct pic_softc *pic, size_t irqbase,
187 uint32_t irq_mask) 186 uint32_t irq_mask)
188{ 187{