Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
setup.c File Reference
#include <linux/irq.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <asm/m32r.h>
#include <asm/io.h>

Go to the source code of this file.

Data Structures

struct  pld_icu_data_t
 

Macros

#define irq2port(x)   (M32R_ICU_CR1_PORTL + ((x - 1) * sizeof(unsigned long)))
 
#define irq2pldirq(x)   ((x) - OPSPUT_PLD_IRQ_BASE)
 
#define pldirq2port(x)
 
#define irq2lanpldirq(x)   ((x) - OPSPUT_LAN_PLD_IRQ_BASE)
 
#define lanpldirq2port(x)
 
#define irq2lcdpldirq(x)   ((x) - OPSPUT_LCD_PLD_IRQ_BASE)
 
#define lcdpldirq2port(x)
 

Functions

void __init init_IRQ (void)
 
 arch_initcall (platform_init)
 

Variables

icu_data_t icu_data [OPSPUT_NUM_CPU_IRQ]
 

Macro Definition Documentation

#define irq2lanpldirq (   x)    ((x) - OPSPUT_LAN_PLD_IRQ_BASE)

Definition at line 141 of file setup.c.

#define irq2lcdpldirq (   x)    ((x) - OPSPUT_LCD_PLD_IRQ_BASE)

Definition at line 201 of file setup.c.

#define irq2pldirq (   x)    ((x) - OPSPUT_PLD_IRQ_BASE)

Definition at line 77 of file setup.c.

#define irq2port (   x)    (M32R_ICU_CR1_PORTL + ((x - 1) * sizeof(unsigned long)))

Definition at line 26 of file setup.c.

#define lanpldirq2port (   x)
Value:
(unsigned long)((int)OPSPUT_LAN_ICUCR1 + \
(((x) - 1) * sizeof(unsigned short)))

Definition at line 142 of file setup.c.

#define lcdpldirq2port (   x)
Value:
(unsigned long)((int)OPSPUT_LCD_ICUCR1 + \
(((x) - 1) * sizeof(unsigned short)))

Definition at line 202 of file setup.c.

#define pldirq2port (   x)
Value:
(unsigned long)((int)PLD_ICUCR1 + \
(((x) - 1) * sizeof(unsigned short)))

Definition at line 78 of file setup.c.

Function Documentation

arch_initcall ( platform_init  )
void __init init_IRQ ( void  )

The hexagon core comes with a first-level interrupt controller with 32 total possible interrupts. When the core is embedded into different systems/platforms, it is typically wrapped by macro cells that provide one or more second-level interrupt controllers that are cascaded into one or more of the first-level interrupts handled here. The precise wiring of these other irqs varies from platform to platform, and are set up & configured in the platform-specific files.

The first-level interrupt controller is wrapped by the VM, which virtualizes the interrupt controller for us. It provides a very simple, fast & efficient API, and so the fasteoi handler is appropriate for this case.

Definition at line 257 of file setup.c.

Variable Documentation

icu_data_t icu_data[OPSPUT_NUM_CPU_IRQ]

Definition at line 28 of file setup.c.