Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Enumerations | Functions
irq-vic.c File Reference
#include <linux/init.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/ptrace.h>
#include <linux/timer.h>
#include <linux/irq.h>
#include <linux/io.h>
#include <asm/cacheflush.h>
#include <mach/hardware.h>
#include <mach/msm_iomap.h>
#include "smd_private.h"

Go to the source code of this file.

Macros

#define VIC_REG(off)   (MSM_VIC_BASE + (off))
 
#define VIC_INT_TO_REG_ADDR(base, irq)   (base + (irq / 32) * 4)
 
#define VIC_INT_TO_REG_INDEX(irq)   ((irq >> 5) & 3)
 
#define VIC_INT_SELECT0   VIC_REG(0x0000) /* 1: FIQ, 0: IRQ */
 
#define VIC_INT_SELECT1   VIC_REG(0x0004) /* 1: FIQ, 0: IRQ */
 
#define VIC_INT_SELECT2   VIC_REG(0x0008) /* 1: FIQ, 0: IRQ */
 
#define VIC_INT_SELECT3   VIC_REG(0x000C) /* 1: FIQ, 0: IRQ */
 
#define VIC_INT_EN0   VIC_REG(0x0010)
 
#define VIC_INT_EN1   VIC_REG(0x0014)
 
#define VIC_INT_EN2   VIC_REG(0x0018)
 
#define VIC_INT_EN3   VIC_REG(0x001C)
 
#define VIC_INT_ENCLEAR0   VIC_REG(0x0020)
 
#define VIC_INT_ENCLEAR1   VIC_REG(0x0024)
 
#define VIC_INT_ENCLEAR2   VIC_REG(0x0028)
 
#define VIC_INT_ENCLEAR3   VIC_REG(0x002C)
 
#define VIC_INT_ENSET0   VIC_REG(0x0030)
 
#define VIC_INT_ENSET1   VIC_REG(0x0034)
 
#define VIC_INT_ENSET2   VIC_REG(0x0038)
 
#define VIC_INT_ENSET3   VIC_REG(0x003C)
 
#define VIC_INT_TYPE0   VIC_REG(0x0040) /* 1: EDGE, 0: LEVEL */
 
#define VIC_INT_TYPE1   VIC_REG(0x0044) /* 1: EDGE, 0: LEVEL */
 
#define VIC_INT_TYPE2   VIC_REG(0x0048) /* 1: EDGE, 0: LEVEL */
 
#define VIC_INT_TYPE3   VIC_REG(0x004C) /* 1: EDGE, 0: LEVEL */
 
#define VIC_INT_POLARITY0   VIC_REG(0x0050) /* 1: NEG, 0: POS */
 
#define VIC_INT_POLARITY1   VIC_REG(0x0054) /* 1: NEG, 0: POS */
 
#define VIC_INT_POLARITY2   VIC_REG(0x0058) /* 1: NEG, 0: POS */
 
#define VIC_INT_POLARITY3   VIC_REG(0x005C) /* 1: NEG, 0: POS */
 
#define VIC_NO_PEND_VAL   VIC_REG(0x0060)
 
#define VIC_INT_MASTEREN   VIC_REG(0x0064) /* 1: IRQ, 2: FIQ */
 
#define VIC_PROTECTION   VIC_REG(0x006C) /* 1: ENABLE */
 
#define VIC_CONFIG   VIC_REG(0x0068) /* 1: USE ARM1136 VIC */
 
#define VIC_IRQ_STATUS0   VIC_REG(0x0080)
 
#define VIC_IRQ_STATUS1   VIC_REG(0x0084)
 
#define VIC_IRQ_STATUS2   VIC_REG(0x0088)
 
#define VIC_IRQ_STATUS3   VIC_REG(0x008C)
 
#define VIC_FIQ_STATUS0   VIC_REG(0x0090)
 
#define VIC_FIQ_STATUS1   VIC_REG(0x0094)
 
#define VIC_FIQ_STATUS2   VIC_REG(0x0098)
 
#define VIC_FIQ_STATUS3   VIC_REG(0x009C)
 
#define VIC_RAW_STATUS0   VIC_REG(0x00A0)
 
#define VIC_RAW_STATUS1   VIC_REG(0x00A4)
 
#define VIC_RAW_STATUS2   VIC_REG(0x00A8)
 
#define VIC_RAW_STATUS3   VIC_REG(0x00AC)
 
#define VIC_INT_CLEAR0   VIC_REG(0x00B0)
 
#define VIC_INT_CLEAR1   VIC_REG(0x00B4)
 
#define VIC_INT_CLEAR2   VIC_REG(0x00B8)
 
#define VIC_INT_CLEAR3   VIC_REG(0x00BC)
 
#define VIC_SOFTINT0   VIC_REG(0x00C0)
 
#define VIC_SOFTINT1   VIC_REG(0x00C4)
 
#define VIC_SOFTINT2   VIC_REG(0x00C8)
 
#define VIC_SOFTINT3   VIC_REG(0x00CC)
 
#define VIC_IRQ_VEC_RD   VIC_REG(0x00D0) /* pending int # */
 
#define VIC_IRQ_VEC_PEND_RD   VIC_REG(0x00D4) /* pending vector addr */
 
#define VIC_IRQ_VEC_WR   VIC_REG(0x00D8)
 
#define VIC_IRQ_IN_SERVICE   VIC_REG(0x00E0)
 
#define VIC_IRQ_IN_STACK   VIC_REG(0x00E4)
 
#define VIC_TEST_BUS_SEL   VIC_REG(0x00E8)
 
#define VIC_VECTPRIORITY(n)   VIC_REG(0x0200+((n) * 4))
 
#define VIC_VECTADDR(n)   VIC_REG(0x0400+((n) * 4))
 
#define VIC_NUM_REGS   2
 
#define DPRINT_REGS(base_reg, format,...)
 
#define DPRINT_ARRAY(array, format,...)
 
#define SMSM_FAKE_IRQ   (0xff)
 

Enumerations

enum  {
  IRQ_DEBUG_SLEEP_INT_TRIGGER = 1U << 0, IRQ_DEBUG_SLEEP_INT = 1U << 1, IRQ_DEBUG_SLEEP_ABORT = 1U << 2, IRQ_DEBUG_SLEEP = 1U << 3,
  IRQ_DEBUG_SLEEP_REQUEST = 1U << 4
}
 

Functions

 module_param_named (debug_mask, msm_irq_debug_mask, int, S_IRUGO|S_IWUSR|S_IWGRP)
 
void __init msm_init_irq (void)
 

Macro Definition Documentation

#define DPRINT_ARRAY (   array,
  format,
  ... 
)
Value:
printk(KERN_INFO format " %x %x\n", ##__VA_ARGS__, \
array[0], array[1])

Definition at line 137 of file irq-vic.c.

#define DPRINT_REGS (   base_reg,
  format,
  ... 
)
Value:
printk(KERN_INFO format " %x %x\n", ##__VA_ARGS__, \
readl(base_reg ## 0), readl(base_reg ## 1))

Definition at line 134 of file irq-vic.c.

#define SMSM_FAKE_IRQ   (0xff)

Definition at line 162 of file irq-vic.c.

#define VIC_CONFIG   VIC_REG(0x0068) /* 1: USE ARM1136 VIC */

Definition at line 81 of file irq-vic.c.

#define VIC_FIQ_STATUS0   VIC_REG(0x0090)

Definition at line 88 of file irq-vic.c.

#define VIC_FIQ_STATUS1   VIC_REG(0x0094)

Definition at line 89 of file irq-vic.c.

#define VIC_FIQ_STATUS2   VIC_REG(0x0098)

Definition at line 90 of file irq-vic.c.

#define VIC_FIQ_STATUS3   VIC_REG(0x009C)

Definition at line 91 of file irq-vic.c.

#define VIC_INT_CLEAR0   VIC_REG(0x00B0)

Definition at line 96 of file irq-vic.c.

#define VIC_INT_CLEAR1   VIC_REG(0x00B4)

Definition at line 97 of file irq-vic.c.

#define VIC_INT_CLEAR2   VIC_REG(0x00B8)

Definition at line 98 of file irq-vic.c.

#define VIC_INT_CLEAR3   VIC_REG(0x00BC)

Definition at line 99 of file irq-vic.c.

#define VIC_INT_EN0   VIC_REG(0x0010)

Definition at line 52 of file irq-vic.c.

#define VIC_INT_EN1   VIC_REG(0x0014)

Definition at line 53 of file irq-vic.c.

#define VIC_INT_EN2   VIC_REG(0x0018)

Definition at line 54 of file irq-vic.c.

#define VIC_INT_EN3   VIC_REG(0x001C)

Definition at line 55 of file irq-vic.c.

#define VIC_INT_ENCLEAR0   VIC_REG(0x0020)

Definition at line 56 of file irq-vic.c.

#define VIC_INT_ENCLEAR1   VIC_REG(0x0024)

Definition at line 57 of file irq-vic.c.

#define VIC_INT_ENCLEAR2   VIC_REG(0x0028)

Definition at line 58 of file irq-vic.c.

#define VIC_INT_ENCLEAR3   VIC_REG(0x002C)

Definition at line 59 of file irq-vic.c.

#define VIC_INT_ENSET0   VIC_REG(0x0030)

Definition at line 60 of file irq-vic.c.

#define VIC_INT_ENSET1   VIC_REG(0x0034)

Definition at line 61 of file irq-vic.c.

#define VIC_INT_ENSET2   VIC_REG(0x0038)

Definition at line 62 of file irq-vic.c.

#define VIC_INT_ENSET3   VIC_REG(0x003C)

Definition at line 63 of file irq-vic.c.

#define VIC_INT_MASTEREN   VIC_REG(0x0064) /* 1: IRQ, 2: FIQ */

Definition at line 79 of file irq-vic.c.

#define VIC_INT_POLARITY0   VIC_REG(0x0050) /* 1: NEG, 0: POS */

Definition at line 68 of file irq-vic.c.

#define VIC_INT_POLARITY1   VIC_REG(0x0054) /* 1: NEG, 0: POS */

Definition at line 69 of file irq-vic.c.

#define VIC_INT_POLARITY2   VIC_REG(0x0058) /* 1: NEG, 0: POS */

Definition at line 70 of file irq-vic.c.

#define VIC_INT_POLARITY3   VIC_REG(0x005C) /* 1: NEG, 0: POS */

Definition at line 71 of file irq-vic.c.

#define VIC_INT_SELECT0   VIC_REG(0x0000) /* 1: FIQ, 0: IRQ */

Definition at line 48 of file irq-vic.c.

#define VIC_INT_SELECT1   VIC_REG(0x0004) /* 1: FIQ, 0: IRQ */

Definition at line 49 of file irq-vic.c.

#define VIC_INT_SELECT2   VIC_REG(0x0008) /* 1: FIQ, 0: IRQ */

Definition at line 50 of file irq-vic.c.

#define VIC_INT_SELECT3   VIC_REG(0x000C) /* 1: FIQ, 0: IRQ */

Definition at line 51 of file irq-vic.c.

#define VIC_INT_TO_REG_ADDR (   base,
  irq 
)    (base + (irq / 32) * 4)

Definition at line 45 of file irq-vic.c.

#define VIC_INT_TO_REG_INDEX (   irq)    ((irq >> 5) & 3)

Definition at line 46 of file irq-vic.c.

#define VIC_INT_TYPE0   VIC_REG(0x0040) /* 1: EDGE, 0: LEVEL */

Definition at line 64 of file irq-vic.c.

#define VIC_INT_TYPE1   VIC_REG(0x0044) /* 1: EDGE, 0: LEVEL */

Definition at line 65 of file irq-vic.c.

#define VIC_INT_TYPE2   VIC_REG(0x0048) /* 1: EDGE, 0: LEVEL */

Definition at line 66 of file irq-vic.c.

#define VIC_INT_TYPE3   VIC_REG(0x004C) /* 1: EDGE, 0: LEVEL */

Definition at line 67 of file irq-vic.c.

#define VIC_IRQ_IN_SERVICE   VIC_REG(0x00E0)

Definition at line 119 of file irq-vic.c.

#define VIC_IRQ_IN_STACK   VIC_REG(0x00E4)

Definition at line 120 of file irq-vic.c.

#define VIC_IRQ_STATUS0   VIC_REG(0x0080)

Definition at line 84 of file irq-vic.c.

#define VIC_IRQ_STATUS1   VIC_REG(0x0084)

Definition at line 85 of file irq-vic.c.

#define VIC_IRQ_STATUS2   VIC_REG(0x0088)

Definition at line 86 of file irq-vic.c.

#define VIC_IRQ_STATUS3   VIC_REG(0x008C)

Definition at line 87 of file irq-vic.c.

#define VIC_IRQ_VEC_PEND_RD   VIC_REG(0x00D4) /* pending vector addr */

Definition at line 105 of file irq-vic.c.

#define VIC_IRQ_VEC_RD   VIC_REG(0x00D0) /* pending int # */

Definition at line 104 of file irq-vic.c.

#define VIC_IRQ_VEC_WR   VIC_REG(0x00D8)

Definition at line 106 of file irq-vic.c.

#define VIC_NO_PEND_VAL   VIC_REG(0x0060)

Definition at line 72 of file irq-vic.c.

#define VIC_NUM_REGS   2

Definition at line 130 of file irq-vic.c.

#define VIC_PROTECTION   VIC_REG(0x006C) /* 1: ENABLE */

Definition at line 80 of file irq-vic.c.

#define VIC_RAW_STATUS0   VIC_REG(0x00A0)

Definition at line 92 of file irq-vic.c.

#define VIC_RAW_STATUS1   VIC_REG(0x00A4)

Definition at line 93 of file irq-vic.c.

#define VIC_RAW_STATUS2   VIC_REG(0x00A8)

Definition at line 94 of file irq-vic.c.

#define VIC_RAW_STATUS3   VIC_REG(0x00AC)

Definition at line 95 of file irq-vic.c.

#define VIC_REG (   off)    (MSM_VIC_BASE + (off))

Definition at line 44 of file irq-vic.c.

#define VIC_SOFTINT0   VIC_REG(0x00C0)

Definition at line 100 of file irq-vic.c.

#define VIC_SOFTINT1   VIC_REG(0x00C4)

Definition at line 101 of file irq-vic.c.

#define VIC_SOFTINT2   VIC_REG(0x00C8)

Definition at line 102 of file irq-vic.c.

#define VIC_SOFTINT3   VIC_REG(0x00CC)

Definition at line 103 of file irq-vic.c.

#define VIC_TEST_BUS_SEL   VIC_REG(0x00E8)

Definition at line 121 of file irq-vic.c.

#define VIC_VECTADDR (   n)    VIC_REG(0x0400+((n) * 4))

Definition at line 125 of file irq-vic.c.

#define VIC_VECTPRIORITY (   n)    VIC_REG(0x0200+((n) * 4))

Definition at line 124 of file irq-vic.c.

Enumeration Type Documentation

anonymous enum
Enumerator:
IRQ_DEBUG_SLEEP_INT_TRIGGER 
IRQ_DEBUG_SLEEP_INT 
IRQ_DEBUG_SLEEP_ABORT 
IRQ_DEBUG_SLEEP 
IRQ_DEBUG_SLEEP_REQUEST 

Definition at line 33 of file irq-vic.c.

Function Documentation

module_param_named ( debug_mask  ,
msm_irq_debug_mask  ,
int  ,
S_IRUGO|S_IWUSR S_IWGRP 
)
void __init msm_init_irq ( void  )

Definition at line 337 of file irq-vic.c.

Variable Documentation

uint32_t int_en[2]

Definition at line 155 of file irq-vic.c.

uint32_t int_polarity

Definition at line 157 of file irq-vic.c.

uint32_t int_select

Definition at line 158 of file irq-vic.c.

Definition at line 156 of file irq-vic.c.