Exemplo n.º 1
0
static unsigned char irq_xlate[32] = {
    /*  0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  a,  b,  c,  d,  e,  f */
	0,  0,  0,  0,  1,  0,  2,  0,  3,  0,  4,  5,  6, 14,  0,  7,
	0,  0,  8,  9,  0, 10,  0, 11,  0, 12,  0, 13,  0, 14,  0,  0
};

static unsigned long irq_mask[] = {
	0,						  /* illegal index */
	SUN4M_INT_SCSI,				  	  /*  1 irq 4 */
	SUN4M_INT_ETHERNET,				  /*  2 irq 6 */
	SUN4M_INT_VIDEO,				  /*  3 irq 8 */
	SUN4M_INT_REALTIME,				  /*  4 irq 10 */
	SUN4M_INT_FLOPPY,				  /*  5 irq 11 */
	(SUN4M_INT_SERIAL | SUN4M_INT_KBDMS),	  	  /*  6 irq 12 */
	SUN4M_INT_MODULE_ERR,			  	  /*  7 irq 15 */
	SUN4M_INT_SBUS(0),				  /*  8 irq 2 */
	SUN4M_INT_SBUS(1),				  /*  9 irq 3 */
	SUN4M_INT_SBUS(2),				  /* 10 irq 5 */
	SUN4M_INT_SBUS(3),				  /* 11 irq 7 */
	SUN4M_INT_SBUS(4),				  /* 12 irq 9 */
	SUN4M_INT_SBUS(5),				  /* 13 irq 11 */
	SUN4M_INT_SBUS(6)				  /* 14 irq 13 */
};

static int sun4m_pil_map[] = { 0, 2, 3, 5, 7, 9, 11, 13 };

unsigned int sun4m_sbint_to_irq(struct sbus_dev *sdev, unsigned int sbint) 
{
	if (sbint >= sizeof(sun4m_pil_map)) {
		printk(KERN_ERR "%s: bogus SBINT %d\n", sdev->prom_name, sbint);
		BUG();
Exemplo n.º 2
0
    SUN4M_SOFT_INT(2),  SUN4M_SOFT_INT(3),
    SUN4M_SOFT_INT(4),  SUN4M_SOFT_INT(5),
    SUN4M_SOFT_INT(6),  SUN4M_SOFT_INT(7),
    SUN4M_SOFT_INT(8),  SUN4M_SOFT_INT(9),
    SUN4M_SOFT_INT(10), SUN4M_SOFT_INT(11),
    SUN4M_SOFT_INT(12), SUN4M_SOFT_INT(13),
    SUN4M_SOFT_INT(14), SUN4M_SOFT_INT(15),
    /* 0x20 - onboard */
    0, 0, 0, 0,
    SUN4M_INT_SCSI,  0, SUN4M_INT_ETHERNET, 0,
    SUN4M_INT_VIDEO, SUN4M_INT_MODULE,
    SUN4M_INT_REALTIME, SUN4M_INT_FLOPPY,
    (SUN4M_INT_SERIAL | SUN4M_INT_KBDMS),
    SUN4M_INT_AUDIO, SUN4M_INT_E14, SUN4M_INT_MODULE_ERR,
    /* 0x30 - sbus */
    0, 0, SUN4M_INT_SBUS(0), SUN4M_INT_SBUS(1),
    0, SUN4M_INT_SBUS(2), 0, SUN4M_INT_SBUS(3),
    0, SUN4M_INT_SBUS(4), 0, SUN4M_INT_SBUS(5),
    0, SUN4M_INT_SBUS(6), 0, 0,
    /* 0x40 - vme */
    0, 0, SUN4M_INT_VME(0), SUN4M_INT_VME(1),
    0, SUN4M_INT_VME(2), 0, SUN4M_INT_VME(3),
    0, SUN4M_INT_VME(4), 0, SUN4M_INT_VME(5),
    0, SUN4M_INT_VME(6), 0, 0
};

static void sun4m_mask_irq(struct irq_data *data)
{
    struct sun4m_handler_data *handler_data = data->handler_data;
    int cpu = smp_processor_id();
Exemplo n.º 3
0
	SUN4M_SOFT_INT(2),  SUN4M_SOFT_INT(3),
	SUN4M_SOFT_INT(4),  SUN4M_SOFT_INT(5),
	SUN4M_SOFT_INT(6),  SUN4M_SOFT_INT(7),
	SUN4M_SOFT_INT(8),  SUN4M_SOFT_INT(9),
	SUN4M_SOFT_INT(10), SUN4M_SOFT_INT(11),
	SUN4M_SOFT_INT(12), SUN4M_SOFT_INT(13),
	SUN4M_SOFT_INT(14), SUN4M_SOFT_INT(15),
	/* onboard */
	0, 0, 0, 0,
	SUN4M_INT_SCSI,  0, SUN4M_INT_ETHERNET, 0,
	SUN4M_INT_VIDEO, SUN4M_INT_MODULE,
	SUN4M_INT_REALTIME, SUN4M_INT_FLOPPY,
	(SUN4M_INT_SERIAL | SUN4M_INT_KBDMS),
	SUN4M_INT_AUDIO, 0, SUN4M_INT_MODULE_ERR,
	/* sbus */
	0, 0, SUN4M_INT_SBUS(0), SUN4M_INT_SBUS(1),
	0, SUN4M_INT_SBUS(2), 0, SUN4M_INT_SBUS(3),
	0, SUN4M_INT_SBUS(4), 0, SUN4M_INT_SBUS(5),
	0, SUN4M_INT_SBUS(6), 0, 0,
	/* vme */
	0, 0, SUN4M_INT_VME(0), SUN4M_INT_VME(1),
	0, SUN4M_INT_VME(2), 0, SUN4M_INT_VME(3),
	0, SUN4M_INT_VME(4), 0, SUN4M_INT_VME(5),
	0, SUN4M_INT_VME(6), 0, 0
};

static unsigned long sun4m_get_irqmask(unsigned int irq)
{
	unsigned long mask;
    
	if (irq < 0x50)