2006-09-27 14:53:35 +09:00
/*
2011-01-07 03:02:14 +00:00
* arch / sh / boards / mach - landisk / irq . c
2006-09-27 14:53:35 +09:00
*
2007-03-19 16:24:12 +09:00
* I - O DATA Device , Inc . LANDISK Support
*
* Copyright ( C ) 2005 - 2007 kogiidena
2011-01-07 03:02:14 +00:00
* Copyright ( C ) 2011 Nobuhiro Iwamatsu
2007-03-19 16:24:12 +09:00
*
2006-09-27 14:53:35 +09:00
* Copyright ( C ) 2001 Ian da Silva , Jeremy Siegel
* Based largely on io_se . c .
*
2007-03-19 16:24:12 +09:00
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
2006-09-27 14:53:35 +09:00
*/
2011-01-07 03:02:14 +00:00
2006-09-27 14:53:35 +09:00
# include <linux/init.h>
# include <linux/irq.h>
2006-12-07 17:27:18 +09:00
# include <linux/interrupt.h>
# include <linux/io.h>
2008-07-29 22:10:01 +09:00
# include <mach-landisk/mach/iodata_landisk.h>
2006-09-27 14:53:35 +09:00
2011-01-07 03:02:14 +00:00
enum {
UNUSED = 0 ,
2006-09-27 14:53:35 +09:00
2011-01-07 03:02:14 +00:00
PCI_INTA , /* PCI int A */
PCI_INTB , /* PCI int B */
PCI_INTC , /* PCI int C */
PCI_INTD , /* PCI int D */
ATA , /* ATA */
FATA , /* CF */
POWER , /* Power swtich */
BUTTON , /* Button swtich */
} ;
2006-09-27 14:53:35 +09:00
2011-01-07 03:02:14 +00:00
/* Vectors for LANDISK */
static struct intc_vect vectors_landisk [ ] __initdata = {
INTC_IRQ ( PCI_INTA , IRQ_PCIINTA ) ,
INTC_IRQ ( PCI_INTB , IRQ_PCIINTB ) ,
INTC_IRQ ( PCI_INTC , IRQ_PCIINTC ) ,
INTC_IRQ ( PCI_INTD , IRQ_PCIINTD ) ,
INTC_IRQ ( ATA , IRQ_ATA ) ,
INTC_IRQ ( FATA , IRQ_FATA ) ,
INTC_IRQ ( POWER , IRQ_POWER ) ,
INTC_IRQ ( BUTTON , IRQ_BUTTON ) ,
} ;
2006-09-27 14:53:35 +09:00
2011-01-07 03:02:14 +00:00
/* IRLMSK mask register layout for LANDISK */
static struct intc_mask_reg mask_registers_landisk [ ] __initdata = {
{ PA_IMASK , 0 , 8 , /* IRLMSK */
{ BUTTON , POWER , FATA , ATA ,
PCI_INTD , PCI_INTC , PCI_INTB , PCI_INTA ,
}
} ,
2006-09-27 14:53:35 +09:00
} ;
2011-01-07 03:02:14 +00:00
static DECLARE_INTC_DESC ( intc_desc_landisk , " landisk " , vectors_landisk , NULL ,
mask_registers_landisk , NULL , NULL ) ;
2006-09-27 14:53:35 +09:00
/*
* Initialize IRQ setting
*/
void __init init_landisk_IRQ ( void )
{
2011-01-07 03:02:14 +00:00
register_intc_controller ( & intc_desc_landisk ) ;
2010-01-26 12:58:40 +09:00
__raw_writeb ( 0x00 , PA_PWRINT_CLR ) ;
2006-09-27 14:53:35 +09:00
}