Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 355192
b: refs/heads/master
c: f6e916b
h: refs/heads/master
v: v3
  • Loading branch information
Thomas Petazzoni authored and Rob Herring committed Jan 10, 2013
1 parent bc82268 commit 7ef0a2b
Show file tree
Hide file tree
Showing 7 changed files with 93 additions and 2 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: edd96900cfd5f993b448dcdcb0e13090701554ae
refs/heads/master: f6e916b82022cba67bdd0ec7df84e2bce2ef3f73
4 changes: 4 additions & 0 deletions trunk/drivers/irqchip/Kconfig
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
config IRQCHIP
def_bool y
depends on OF_IRQ

config VERSATILE_FPGA_IRQ
bool
select IRQ_DOMAIN
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/irqchip/Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
obj-$(CONFIG_IRQCHIP) += irqchip.o

obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o
obj-$(CONFIG_ARCH_SUNXI) += irq-sunxi.o
obj-$(CONFIG_VERSATILE_FPGA_IRQ) += irq-versatile-fpga.o
Expand Down
30 changes: 30 additions & 0 deletions trunk/drivers/irqchip/irqchip.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Copyright (C) 2012 Thomas Petazzoni
*
* Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/

#include <linux/init.h>
#include <linux/of_irq.h>

#include "irqchip.h"

/*
* This special of_device_id is the sentinel at the end of the
* of_device_id[] array of all irqchips. It is automatically placed at
* the end of the array by the linker, thanks to being part of a
* special section.
*/
static const struct of_device_id
irqchip_of_match_end __used __section(__irqchip_of_end);

extern struct of_device_id __irqchip_begin[];

void __init irqchip_init(void)
{
of_irq_init(__irqchip_begin);
}
29 changes: 29 additions & 0 deletions trunk/drivers/irqchip/irqchip.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright (C) 2012 Thomas Petazzoni
*
* Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/

#ifndef _IRQCHIP_H
#define _IRQCHIP_H

/*
* This macro must be used by the different irqchip drivers to declare
* the association between their DT compatible string and their
* initialization function.
*
* @name: name that must be unique accross all IRQCHIP_DECLARE of the
* same file.
* @compstr: compatible string of the irqchip driver
* @fn: initialization function
*/
#define IRQCHIP_DECLARE(name,compstr,fn) \
static const struct of_device_id irqchip_of_match_##name \
__used __section(__irqchip_of_table) \
= { .compatible = compstr, .data = fn }

#endif
12 changes: 11 additions & 1 deletion trunk/include/asm-generic/vmlinux.lds.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,15 @@
#define TRACE_SYSCALLS()
#endif

#ifdef CONFIG_IRQCHIP
#define IRQCHIP_OF_MATCH_TABLE() \
. = ALIGN(8); \
VMLINUX_SYMBOL(__irqchip_begin) = .; \
*(__irqchip_of_table) \
*(__irqchip_of_end)
#else
#define IRQCHIP_OF_MATCH_TABLE()
#endif

#define KERNEL_DTB() \
STRUCT_ALIGN(); \
Expand Down Expand Up @@ -493,7 +502,8 @@
DEV_DISCARD(init.rodata) \
CPU_DISCARD(init.rodata) \
MEM_DISCARD(init.rodata) \
KERNEL_DTB()
KERNEL_DTB() \
IRQCHIP_OF_MATCH_TABLE()

#define INIT_TEXT \
*(.init.text) \
Expand Down
16 changes: 16 additions & 0 deletions trunk/include/linux/irqchip.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*
* Copyright (C) 2012 Thomas Petazzoni
*
* Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/

#ifndef _LINUX_IRQCHIP_H
#define _LINUX_IRQCHIP_H

void irqchip_init(void);

#endif

0 comments on commit 7ef0a2b

Please sign in to comment.