Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 326671
b: refs/heads/master
c: 89214f0
h: refs/heads/master
i:
  326669: 9d20cc2
  326667: 98ca8a4
  326663: 9e093e0
  326655: 4e22137
v: v3
  • Loading branch information
Simon Arlott authored and Stephen Warren committed Sep 20, 2012
1 parent 1e5cb4c commit d7ec195
Show file tree
Hide file tree
Showing 10 changed files with 377 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ec9653b8476bf526dde7bdefbc2be6b7aaa34db7
refs/heads/master: 89214f009c1d38568456dcf997d93977928fe2c3
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
BCM2835 Top-Level ("ARMCTRL") Interrupt Controller

The BCM2835 contains a custom top-level interrupt controller, which supports
72 interrupt sources using a 2-level register scheme. The interrupt
controller, or the HW block containing it, is referred to occasionally
as "armctrl" in the SoC documentation, hence naming of this binding.

Required properties:

- compatible : should be "brcm,bcm2835-armctrl-ic.txt"
- reg : Specifies base physical address and size of the registers.
- interrupt-controller : Identifies the node as an interrupt controller
- #interrupt-cells : Specifies the number of cells needed to encode an
interrupt source. The value shall be 2.

The 1st cell is the interrupt bank; 0 for interrupts in the "IRQ basic
pending" register, or 1/2 respectively for interrupts in the "IRQ pending
1/2" register.

The 2nd cell contains the interrupt number within the bank. Valid values
are 0..7 for bank 0, and 0..31 for bank 1.

The interrupt sources are as follows:

Bank 0:
0: ARM_TIMER
1: ARM_MAILBOX
2: ARM_DOORBELL_0
3: ARM_DOORBELL_1
4: VPU0_HALTED
5: VPU1_HALTED
6: ILLEGAL_TYPE0
7: ILLEGAL_TYPE1

Bank 1:
0: TIMER0
1: TIMER1
2: TIMER2
3: TIMER3
4: CODEC0
5: CODEC1
6: CODEC2
7: VC_JPEG
8: ISP
9: VC_USB
10: VC_3D
11: TRANSPOSER
12: MULTICORESYNC0
13: MULTICORESYNC1
14: MULTICORESYNC2
15: MULTICORESYNC3
16: DMA0
17: DMA1
18: VC_DMA2
19: VC_DMA3
20: DMA4
21: DMA5
22: DMA6
23: DMA7
24: DMA8
25: DMA9
26: DMA10
27: DMA11
28: DMA12
29: AUX
30: ARM
31: VPUDMA

Bank 2:
0: HOSTPORT
1: VIDEOSCALER
2: CCP2TX
3: SDC
4: DSI0
5: AVE
6: CAM0
7: CAM1
8: HDMI0
9: HDMI1
10: PIXELVALVE1
11: I2CSPISLV
12: DSI1
13: PWA0
14: PWA1
15: CPR
16: SMI
17: GPIO0
18: GPIO1
19: GPIO2
20: GPIO3
21: VC_I2C
22: VC_SPI
23: VC_I2SPCM
24: VC_SDIO
25: VC_UART
26: SLIMBUS
27: VEC
28: CPG
29: RNG
30: VC_ARASANSDIO
31: AVSPMON

Example:

intc: interrupt-controller {
compatible = "brcm,bcm2835-armctrl-ic";
reg = <0x7e00b200 0x200>;
interrupt-controller;
#interrupt-cells = <2>;
};
8 changes: 8 additions & 0 deletions trunk/arch/arm/boot/dts/bcm2835.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
/ {
compatible = "brcm,bcm2835";
model = "BCM2835";
interrupt-parent = <&intc>;

chosen {
bootargs = "earlyprintk";
Expand All @@ -13,5 +14,12 @@
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x7e000000 0x20000000 0x02000000>;

intc: interrupt-controller {
compatible = "brcm,bcm2835-armctrl-ic";
reg = <0x7e00b200 0x200>;
interrupt-controller;
#interrupt-cells = <2>;
};
};
};
10 changes: 1 addition & 9 deletions trunk/arch/arm/mach-bcm2835/bcm2835.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
*/

#include <linux/init.h>
#include <linux/irqchip/bcm2835.h>
#include <linux/of_platform.h>

#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/time.h>
#include <asm/exception.h>

#include <mach/bcm2835_soc.h>

Expand All @@ -34,14 +34,6 @@ void __init bcm2835_map_io(void)
iotable_init(&io_map, 1);
}

void __init bcm2835_init_irq(void)
{
}

asmlinkage void __exception_irq_entry bcm2835_handle_irq(struct pt_regs *regs)
{
}

void __init bcm2835_init(void)
{
int ret;
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -152,4 +152,6 @@ source "drivers/vme/Kconfig"

source "drivers/pwm/Kconfig"

source "drivers/irqchip/Kconfig"

endmenu
2 changes: 2 additions & 0 deletions trunk/drivers/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
# Rewritten to use lists instead of if-statements.
#

obj-y += irqchip/

# GPIO must come after pinctrl as gpios may need to mux pins etc
obj-y += pinctrl/
obj-y += gpio/
Expand Down
Empty file added trunk/drivers/irqchip/Kconfig
Empty file.
1 change: 1 addition & 0 deletions trunk/drivers/irqchip/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o
Loading

0 comments on commit d7ec195

Please sign in to comment.