irq.h File Reference

#include <types.h>
#include <broadway/hollywood.h>

Go to the source code of this file.

Data Structures

struct  irq_handler_t

Defines

#define HW_BWIRQFLAG   PI_INT_CAUSE
#define HW_BWIRQMASK   PI_INT_MASK
#define IRQ_HW_TIMER   (0)
#define IRQ_HW_NAND   (1)
#define IRQ_HW_AES   (2)
#define IRQ_HW_SHA1   (3)
#define IRQ_HW_EHCI   (4)
#define IRQ_HW_OHCI0   (5)
#define IRQ_HW_OHCI1   (6)
#define IRQ_HW_SDHC   (7)
#define IRQ_HW_WIFI   (8)
#define IRQ_HW_GPIO1B   (10)
#define IRQ_HW_GPIO1   (11)
#define IRQ_HW_RESET   (17)
#define IRQ_HW_PPCIPC   (30)
#define IRQ_HW_IPC   (31)
#define IRQ_HW_MAX   (32)
#define IRQ_BW_RESET   (1)
#define IRQ_BW_DI   (2)
#define IRQ_BW_SI   (3)
#define IRQ_BW_EXI   (4)
#define IRQ_BW_AI   (5)
#define IRQ_BW_DSP   (6)
#define IRQ_BW_MEM   (7)
#define IRQ_BW_VI   (8)
#define IRQ_BW_PE_TOKEN   (9)
#define IRQ_BW_PE_FINISH   (10)
#define IRQ_BW_CP   (11)
#define IRQ_BW_DEBUG   (12)
#define IRQ_BW_HSP   (13)
#define IRQ_BW_HW   (14)
#define IRQ_BW_RESET_SW   (16)
#define IRQ_BW_MAX   (32)
#define IRQ_MI_MEM0   (0)
#define IRQ_MI_MEM1   (1)
#define IRQ_MI_MEM2   (2)
#define IRQ_MI_MEM3   (3)
#define IRQ_MI_MEMADDR   (4)
#define IRQ_MI_MAX   (5)
#define IRQ_EXI_EXI0   (0)
#define IRQ_EXI_TC0   (1)
#define IRQ_EXI_EXT0   (2)
#define IRQ_EXI_EXI1   (3)
#define IRQ_EXI_TC1   (4)
#define IRQ_EXI_EXT1   (5)
#define IRQ_EXI_EXI2   (6)
#define IRQ_EXI_TC2   (7)
#define IRQ_EXI_EXT2   (8)
#define IRQ_EXI_MAX   (9)
#define IRQ_DI_BREAK   (0)
#define IRQ_DI_TC   (1)
#define IRQ_DI_ERROR   (2)
#define IRQ_DI_COVER   (3)
#define IRQ_DI_MAX   (4)
#define IRQF(n)   (1 << n)
#define IRQF_HW_TIMER   (IRQF(IRQ_HW_TIMER))
#define IRQF_HW_NAND   (IRQF(IRQ_HW_NAND))
#define IRQF_HW_AES   (IRQF(IRQ_HW_AES))
#define IRQF_HW_SHA1   (IRQF(IRQ_HW_SHA1))
#define IRQF_HW_EHCI   (IRQF(IRQ_HW_EHCI))
#define IRQF_HW_OHCI0   (IRQF(IRQ_HW_OHCI0))
#define IRQF_HW_OHCI1   (IRQF(IRQ_HW_OHCI1))
#define IRQF_HW_SDHC   (IRQF(IRQ_HW_SDHC))
#define IRQF_HW_WIFI   (IRQF(IRQ_HW_WIFI))
#define IRQF_HW_GPIO1B   (IRQF(IRQ_HW_GPIO1B))
#define IRQF_HW_GPIO1   (IRQF(IRQ_HW_GPIO1))
#define IRQF_HW_RESET   (IRQF(IRQ_HW_RESET))
#define IRQF_HW_PPCIPC   (IRQF(IRQ_HW_PPCIPC))
#define IRQF_HW_IPC   (IRQF(IRQ_HW_IPC))
#define IRQF_BW_RESET   (IRQF(IRQ_BW_RESET))
#define IRQF_BW_DI   (IRQF(IRQ_BW_DI))
#define IRQF_BW_SI   (IRQF(IRQ_BW_SI))
#define IRQF_BW_EXI   (IRQF(IRQ_BW_EXI))
#define IRQF_BW_AI   (IRQF(IRQ_BW_AI))
#define IRQF_BW_DSP   (IRQF(IRQ_BW_DSP))
#define IRQF_BW_MEM   (IRQF(IRQ_BW_MEM))
#define IRQF_BW_VI   (IRQF(IRQ_BW_VI))
#define IRQF_BW_PE_TOKEN   (IRQF(IRQ_BW_PE_TOKEN))
#define IRQF_BW_PE_FINISH   (IRQF(IRQ_BW_PE_FINISH))
#define IRQF_BW_CP   (IRQF(IRQ_BW_CP))
#define IRQF_BW_DEBUG   (IRQF(IRQ_BW_DEBUG))
#define IRQF_BW_HSP   (IRQF(IRQ_BW_HSP))
#define IRQF_BW_HW   (IRQF(IRQ_BW_HW))
#define IRQF_BW_RESET_SW   (IRQF(IRQ_BW_RESET_SW))
#define IRQF_MI_MEM0   (IRQF(IRQ_MI_MEM0))
#define IRQF_MI_MEM1   (IRQF(IRQ_MI_MEM1))
#define IRQF_MI_MEM2   (IRQF(IRQ_MI_MEM2))
#define IRQF_MI_MEM3   (IRQF(IRQ_MI_MEM3))
#define IRQF_MI_MEMADDR   (IRQF(IRQ_MI_MEMADDR))
#define IRQF_EXI_EXI0   (IRQF(IRQ_EXI_EXI0))
#define IRQF_EXI_TC0   (IRQF(IRQ_EXI_TC0))
#define IRQF_EXI_EXT0   (IRQF(IRQ_EXI_EXT0))
#define IRQF_EXI_EXI1   (IRQF(IRQ_EXI_EXI1))
#define IRQF_EXI_TC1   (IRQF(IRQ_EXI_TC1))
#define IRQF_EXI_EXT1   (IRQF(IRQ_EXI_EXT1))
#define IRQF_EXI_EXI2   (IRQF(IRQ_EXI_EXI2))
#define IRQF_EXI_TC2   (IRQF(IRQ_EXI_TC2))
#define IRQF_EXI_EXT2   (IRQF(IRQ_EXI_EXT2))
#define IRQF_DI_BREAK   (IRQF(IRQ_DI_BREAK))
#define IRQF_DI_TC   (IRQF(IRQ_DI_TC))
#define IRQF_DI_ERROR   (IRQF(IRQ_DI_ERROR))
#define IRQF_DI_COVER   (IRQF(IRQ_DI_COVER))
#define IRQF_HW_ALL
#define IRQF_BW_ALL
#define IRQF_MI_ALL
#define IRQF_EXI_ALL
#define IRQF_DI_ALL   (IRQF_DI_BREAK | IRQF_DI_TC | IRQF_DI_ERROR | IRQF_DI_COVER)

Functions

void irq_initialize (void)
 Initialize the IRQs.
void irq_shutdown (void)
 Shuts down the IRQs.
void irq_bw_enable (u32 irq)
 Enables a specific Broadway IRQ.
void irq_bw_disable (u32 irq)
 Disables a specific Broadway IRQ.
void irq_hw_enable (u32 irq)
 Enables a specific Hollywood IRQ.
void irq_hw_disable (u32 irq)
 Disables a specific Hollywood IRQ.
void irq_enable (void)
 Enables IRQs.
u32 irq_disable (void)
 Disables IRQs.
void irq_restore (u32 was_on)
 Restores IRQ state.
int irq_hw_register_handler (u32 irqn, int(*exec)(u32 irq, void *data), void *data)
 Register a Hollywood IRQ handler.
irq_handler_t irq_hw_get_handler (u32 irqn)
 Gets a Hollywood IRQ handler.
int irq_bw_register_handler (u32 irqn, int(*exec)(u32 irq, void *data), void *data)
 Register a Broadway IRQ handler.
irq_handler_t irq_bw_get_handler (u32 irqn)
 Gets a Broadway IRQ handler.

Detailed Description

This file contains all functions related to Hollywood and Broadway IRQs, and IRQ number definitions for all other subsystems.


Define Documentation

#define HW_BWIRQFLAG   PI_INT_CAUSE

Broadway IRQ flags

#define HW_BWIRQMASK   PI_INT_MASK

Broadway IRQ mask

#define IRQ_BW_AI   (5)

The Broadway IRQ fired by the Audio Interface

#define IRQ_BW_CP   (11)

The Broadway IRQ fired by the Command Processor FIFO

#define IRQ_BW_DEBUG   (12)

The Broadway IRQ fired by the Debugger

#define IRQ_BW_DI   (2)

The Broadway IRQ fired by the DVD Interface

#define IRQ_BW_DSP   (6)

The Broadway IRQ fired by the DSP

#define IRQ_BW_EXI   (4)

The Broadway IRQ fired by the External Interface

#define IRQ_BW_HSP   (13)

The Broadway IRQ fired by the Highspeed Port

#define IRQ_BW_HW   (14)

The Broadway IRQ fired by the Hollywood IRQs

#define IRQ_BW_MEM   (7)

The Broadway IRQ fired by the Memory Interface

#define IRQ_BW_PE_FINISH   (10)

The Broadway IRQ fired by the Pixel Engine when it finishes

#define IRQ_BW_PE_TOKEN   (9)

The Broadway IRQ fired by the Pixel Engine for Tokens

#define IRQ_BW_RESET   (1)

The Broadway IRQ fired by the Reset Switch

#define IRQ_BW_RESET_SW   (16)

The Broadway IRQ fired by the Reset Switch State

#define IRQ_BW_SI   (3)

The Broadway IRQ fired by the Serial Interface

#define IRQ_BW_VI   (8)

The Broadway IRQ fired by the Video Interface

#define IRQ_DI_BREAK   (0)

Break complete DI IRQ

#define IRQ_DI_COVER   (3)

Cover DI IRQ

#define IRQ_DI_ERROR   (2)

Device error DI IRQ

#define IRQ_DI_TC   (1)

Transfer complete DI IRQ

#define IRQ_EXI_EXI0   (0)

EXI IRQ for Channel 0

#define IRQ_EXI_EXI1   (3)

EXI IRQ for Channel 1

#define IRQ_EXI_EXI2   (6)

EXI IRQ for Channel 2

#define IRQ_EXI_EXT0   (2)

EXT IRQ for Channel 0

#define IRQ_EXI_EXT1   (5)

EXT IRQ for Channel 1

#define IRQ_EXI_EXT2   (8)

EXT IRQ for Channel 2

#define IRQ_EXI_TC0   (1)

Transfer complete IRQ for Channel 0

#define IRQ_EXI_TC1   (4)

Transfer complete IRQ for Channel 1

#define IRQ_EXI_TC2   (7)

Transfer complete IRQ for Channel 2

#define IRQ_HW_AES   (2)

The Hollywood IRQ fired by the AES engine

#define IRQ_HW_EHCI   (4)

The Hollywood IRQ fired by the EHCI controller

#define IRQ_HW_GPIO1   (11)

The Hollywood IRQ fired by the Starlet GPIOs

#define IRQ_HW_GPIO1B   (10)

The Hollywood IRQ fired by the Broadway GPIOs

#define IRQ_HW_IPC   (31)

The Hollywood IRQ fired by the Starlet IPC

#define IRQ_HW_NAND   (1)

The Hollywood IRQ fired by the NAND

#define IRQ_HW_OHCI0   (5)

The Hollywood IRQ fired by the OHCI controller 0

#define IRQ_HW_OHCI1   (6)

The Hollywood IRQ fired by the OHCI controller 1

#define IRQ_HW_PPCIPC   (30)

The Hollywood IRQ fired by the Broadway IPC

#define IRQ_HW_RESET   (17)

The Hollywood IRQ fired by the Reset Button

#define IRQ_HW_SDHC   (7)

The Hollywood IRQ fired by the SDHC controller

#define IRQ_HW_SHA1   (3)

The Hollywood IRQ fired by the SHA-1 engine

#define IRQ_HW_TIMER   (0)

The Hollywood IRQ fired by the Starlet Timer

#define IRQ_HW_WIFI   (8)

The Hollywood IRQ fired by the WiFi controller

#define IRQ_MI_MEM0   (0)

The MI IRQ fired for region 0

#define IRQ_MI_MEM1   (1)

The MI IRQ fired for region 1

#define IRQ_MI_MEM2   (2)

The MI IRQ fired for region 2

#define IRQ_MI_MEM3   (3)

The MI IRQ fired for region 3

#define IRQ_MI_MEMADDR   (4)

The MI IRQ fired for all regions (?)

#define IRQF (  )     (1 << n)

Converts IRQ number to IRQ mask

#define IRQF_BW_AI   (IRQF(IRQ_BW_AI))

Flag for IRQ_BW_AI

#define IRQF_BW_ALL
#define IRQF_BW_CP   (IRQF(IRQ_BW_CP))

Flag for IRQ_BW_CP

#define IRQF_BW_DEBUG   (IRQF(IRQ_BW_DEBUG))

Flag for IRQ_BW_DEBUG

#define IRQF_BW_DI   (IRQF(IRQ_BW_DI))

Flag for IRQ_BW_DI

#define IRQF_BW_DSP   (IRQF(IRQ_BW_DSP))

Flag for IRQ_BW_DSP

#define IRQF_BW_EXI   (IRQF(IRQ_BW_EXI))

Flag for IRQ_BW_EXI

#define IRQF_BW_HSP   (IRQF(IRQ_BW_HSP))

Flag for IRQ_BW_HSP

#define IRQF_BW_HW   (IRQF(IRQ_BW_HW))

Flag for IRQ_BW_HW

#define IRQF_BW_MEM   (IRQF(IRQ_BW_MEM))

Flag for IRQ_BW_MEM

#define IRQF_BW_PE_FINISH   (IRQF(IRQ_BW_PE_FINISH))

Flag for IRQ_BW_PE_FINISH

#define IRQF_BW_PE_TOKEN   (IRQF(IRQ_BW_PE_TOKEN))

Flag for IRQ_BW_PE_TOKEN

#define IRQF_BW_RESET   (IRQF(IRQ_BW_RESET))

Flag for IRQ_BW_RESET

#define IRQF_BW_RESET_SW   (IRQF(IRQ_BW_RESET_SW))

Flag for IRQ_BW_RESET_SW

#define IRQF_BW_SI   (IRQF(IRQ_BW_SI))

Flag for IRQ_BW_SI

#define IRQF_BW_VI   (IRQF(IRQ_BW_VI))

Flag for IRQ_BW_VI

#define IRQF_DI_ALL   (IRQF_DI_BREAK | IRQF_DI_TC | IRQF_DI_ERROR | IRQF_DI_COVER)

A combination of all the DI IRQ flags

#define IRQF_DI_BREAK   (IRQF(IRQ_DI_BREAK))

Flag for IRQ_DI_BREAK

#define IRQF_DI_COVER   (IRQF(IRQ_DI_COVER))

Flag for IRQ_DI_COVER

#define IRQF_DI_ERROR   (IRQF(IRQ_DI_ERROR))

Flag for IRQ_DI_ERROR

#define IRQF_DI_TC   (IRQF(IRQ_DI_TC))

Flag for IRQ_DI_TC

#define IRQF_EXI_ALL
Value:

A combination of all the EXI IRQ flags

#define IRQF_EXI_EXI0   (IRQF(IRQ_EXI_EXI0))

Flag for IRQ_EXI_EXI0

#define IRQF_EXI_EXI1   (IRQF(IRQ_EXI_EXI1))

Flag for IRQ_EXI_EXI1

#define IRQF_EXI_EXI2   (IRQF(IRQ_EXI_EXI2))

Flag for IRQ_EXI_EXI2

#define IRQF_EXI_EXT0   (IRQF(IRQ_EXI_EXT0))

Flag for IRQ_EXI_EXT0

#define IRQF_EXI_EXT1   (IRQF(IRQ_EXI_EXT1))

Flag for IRQ_EXI_EXT1

#define IRQF_EXI_EXT2   (IRQF(IRQ_EXI_EXT2))

Flag for IRQ_EXI_EXT2

#define IRQF_EXI_TC0   (IRQF(IRQ_EXI_TC0))

Flag for IRQ_EXI_TC0

#define IRQF_EXI_TC1   (IRQF(IRQ_EXI_TC1))

Flag for IRQ_EXI_TC1

#define IRQF_EXI_TC2   (IRQF(IRQ_EXI_TC2))

Flag for IRQ_EXI_TC2

#define IRQF_HW_AES   (IRQF(IRQ_HW_AES))

Flag for IRQ_HW_AES

#define IRQF_HW_ALL
#define IRQF_HW_EHCI   (IRQF(IRQ_HW_EHCI))

Flag for IRQ_HW_EHCI

#define IRQF_HW_GPIO1   (IRQF(IRQ_HW_GPIO1))

Flag for IRQ_HW_GPIO1

#define IRQF_HW_GPIO1B   (IRQF(IRQ_HW_GPIO1B))

Flag for IRQ_HW_GPIO1B

#define IRQF_HW_IPC   (IRQF(IRQ_HW_IPC))

Flag for IRQ_HW_IPC

#define IRQF_HW_NAND   (IRQF(IRQ_HW_NAND))

Flag for IRQ_HW_NAND

#define IRQF_HW_OHCI0   (IRQF(IRQ_HW_OHCI0))

Flag for IRQ_HW_OHCI0

#define IRQF_HW_OHCI1   (IRQF(IRQ_HW_OHCI1))

Flag for IRQ_HW_OHCI1

#define IRQF_HW_PPCIPC   (IRQF(IRQ_HW_PPCIPC))

Flag for IRQ_HW_PPCIPC

#define IRQF_HW_RESET   (IRQF(IRQ_HW_RESET))

Flag for IRQ_HW_RESET

#define IRQF_HW_SDHC   (IRQF(IRQ_HW_SDHC))

Flag for IRQ_HW_SDHC

#define IRQF_HW_SHA1   (IRQF(IRQ_HW_SHA1))

Flag for IRQ_HW_SHA1

#define IRQF_HW_TIMER   (IRQF(IRQ_HW_TIMER))

Flag for IRQ_HW_TIMER

#define IRQF_HW_WIFI   (IRQF(IRQ_HW_WIFI))

Flag for IRQ_HW_WIFI

#define IRQF_MI_ALL
Value:

A combination of all the MI IRQ flags

#define IRQF_MI_MEM0   (IRQF(IRQ_MI_MEM0))

Flag for IRQ_MI_MEM0

#define IRQF_MI_MEM1   (IRQF(IRQ_MI_MEM1))

Flag for IRQ_MI_MEM1

#define IRQF_MI_MEM2   (IRQF(IRQ_MI_MEM2))

Flag for IRQ_MI_MEM2

#define IRQF_MI_MEM3   (IRQF(IRQ_MI_MEM3))

Flag for IRQ_MI_MEM3

#define IRQF_MI_MEMADDR   (IRQF(IRQ_MI_MEMADDR))

Flag for IRQ_MI_MEMADDR


Function Documentation

void irq_bw_disable ( u32  irq  ) 

Disables a specific Broadway IRQ.

Parameters:
irq the IRQ to disable
See also:
irq_bw_enable()
void irq_bw_enable ( u32  irq  ) 

Enables a specific Broadway IRQ.

Parameters:
irq the IRQ to enable
See also:
irq_bw_disable()
irq_handler_t irq_bw_get_handler ( u32  irqn  ) 

Gets a Broadway IRQ handler.

Gets the IRQ handler information for a Broadway IRQ.

Parameters:
irqn the IRQ whose handler is to be returned.
Returns:
The irq_handler_t structure containing information about the handler.
See also:
irq_bw_register_handler()
int irq_bw_register_handler ( u32  irqn,
int(*)(u32 irq, void *data)  exec,
void *  data 
)

Register a Broadway IRQ handler.

Parameters:
irqn the IRQ whose handle is to be registered.
exec the callback to be called when the IRQ fires. Pass NULL to unregister the IRQ.
data the data to be passed to the IRQ when it fires.
Returns:
Returns 1 on success, 0 on failure.
u32 irq_disable ( void   ) 

Disables IRQs.

Disables acceptance of IRQs

Returns:
A mask value that should be passed into irq_restore() when turning IRQs back on.
See also:
irq_restore(), and irq_enable()
void irq_enable ( void   ) 

Enables IRQs.

Enables acceptance of IRQs

See also:
irq_disable(), and irq_restore()
void irq_hw_disable ( u32  irq  ) 

Disables a specific Hollywood IRQ.

Parameters:
irq the IRQ to disable
See also:
irq_hw_enable()
void irq_hw_enable ( u32  irq  ) 

Enables a specific Hollywood IRQ.

Parameters:
irq the IRQ to enable
See also:
irq_hw_disable()
irq_handler_t irq_hw_get_handler ( u32  irqn  ) 

Gets a Hollywood IRQ handler.

Gets the IRQ handler information for a Hollywood IRQ.

Parameters:
irqn the IRQ whose handler is to be returned.
Returns:
The irq_handler_t structure containing information about the handler.
See also:
irq_hw_register_handler()
int irq_hw_register_handler ( u32  irqn,
int(*)(u32 irq, void *data)  exec,
void *  data 
)

Register a Hollywood IRQ handler.

Parameters:
irqn the IRQ whose handle is to be registered.
exec the callback to be called when the IRQ fires. Pass NULL to unregister the IRQ.
data the data to be passed to the IRQ when it fires.
Returns:
Returns 1 on success, 0 on failure.
See also:
irq_hw_get_handler()
void irq_initialize ( void   ) 

Initialize the IRQs.

Initializes the IRQs, registers default IRQ handlers, and performs all other required initialization tasks.

See also:
irq_shutdown()
void irq_restore ( u32  was_on  ) 

Restores IRQ state.

Restores IRQ state from irq_disable().

Parameters:
was_on the mask returned from irq_disable()
See also:
irq_disable(), and irq_enable()
void irq_shutdown ( void   ) 

Shuts down the IRQs.

Disables IRQs, and re-delegates all the IRQs back to the Starlet.

See also:
irq_initialize()
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines
Generated by  doxygen 1.6.3