int toshiba_rbtx4938_irq_nested(int sw_irq) { u8 level3; level3 = reg_rd08(TOSHIBA_RBTX4938_IOC_INTR_STAT) & 0xff; if (level3) { /* must use fls so onboard ATA has priority */ sw_irq = TOSHIBA_RBTX4938_IRQ_IOC_BEG + fls(level3) - 1; } wbflush(); return sw_irq; }
int toshiba_rbtx4927_irq_nested(int sw_irq) { u32 level3; u32 level4; u32 level5; level3 = reg_rd08(TOSHIBA_RBTX4927_IOC_INTR_STAT) & 0x1f; if (level3) { sw_irq = TOSHIBA_RBTX4927_IRQ_IOC_BEG + bit2num(level3); if (sw_irq != TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_IOC) { goto RETURN; } } #ifdef CONFIG_TOSHIBA_FPCIB0 { if (tx4927_using_backplane) { outb(0x0A, 0x20); level4 = inb(0x20) & 0xff; if (level4) { sw_irq = TOSHIBA_RBTX4927_IRQ_ISA_BEG + bit2num(level4); if (sw_irq != TOSHIBA_RBTX4927_IRQ_NEST_ISA_ON_ISA) { goto RETURN; } } outb(0x0A, 0xA0); level5 = inb(0xA0) & 0xff; if (level5) { sw_irq = TOSHIBA_RBTX4927_IRQ_ISA_MID + bit2num(level5); goto RETURN; } } } #endif RETURN: return (sw_irq); }
static int rbtx4939_proc_show_ioc(char *sysbuf, char **start, off_t off, int count, int *eof, void *data) { int len = 0; len += sprintf(sysbuf + len, "rbtx4939_board_rev_ptr :0x%02x\n", reg_rd08(rbtx4939_board_rev_ptr)); len += sprintf(sysbuf + len, "rbtx4939_ioc_rev_ptr :0x%02x\n", reg_rd08(rbtx4939_ioc_rev_ptr)); len += sprintf(sysbuf + len, "rbtx4939_config1_ptr :0x%02x\n", reg_rd08(rbtx4939_config1_ptr)); len += sprintf(sysbuf + len, "rbtx4939_config2_ptr :0x%02x\n", reg_rd08(rbtx4939_config2_ptr)); len += sprintf(sysbuf + len, "rbtx4939_config3_ptr :0x%02x\n", reg_rd08(rbtx4939_config3_ptr)); len += sprintf(sysbuf + len, "rbtx4939_config4_ptr :0x%02x\n", reg_rd08(rbtx4939_config4_ptr)); len += sprintf(sysbuf + len, "rbtx4939_usersw_ptr :0x%02x\n", reg_rd08(rbtx4939_usersw_ptr)); len += sprintf(sysbuf + len, "rbtx4939_bootsw_ptr :0x%02x\n", reg_rd08(rbtx4939_bootsw_ptr)); len += sprintf(sysbuf + len, "rbtx4939_inte_ptr :0x%02x\n", reg_rd08(rbtx4939_inte_ptr)); len += sprintf(sysbuf + len, "rbtx4939_intp_ptr :0x%02x\n", reg_rd08(rbtx4939_intp_ptr)); len += sprintf(sysbuf + len, "rbtx4939_intf1_ptr :0x%02x\n", reg_rd08(rbtx4939_intf1_ptr)); len += sprintf(sysbuf + len, "rbtx4939_intf2_ptr :0x%02x\n", reg_rd08(rbtx4939_intf2_ptr)); len += sprintf(sysbuf + len, "rbtx4939_soft_int_ptr :0x%02x\n", reg_rd08(rbtx4939_soft_int_ptr)); len += sprintf(sysbuf + len, "rbtx4939_isa_status_ptr :0x%02x\n", reg_rd08(rbtx4939_isa_status_ptr)); len += sprintf(sysbuf + len, "rbtx4939_pci66_ptr :0x%02x\n", reg_rd08(rbtx4939_pci66_ptr)); len += sprintf(sysbuf + len, "rbtx4939_romemu_ptr :0x%02x\n", reg_rd08(rbtx4939_romemu_ptr)); len += sprintf(sysbuf + len, "rbtx4939_spics_ptr :0x%02x\n", reg_rd08(rbtx4939_spics_ptr)); len += sprintf(sysbuf + len, "rbtx4939_audio_mode_ptr :0x%02x\n", reg_rd08(rbtx4939_audio_mode_ptr)); len += sprintf(sysbuf + len, "rbtx4939_isa_gpio_ptr :0x%02x\n", reg_rd08(rbtx4939_isa_gpio_ptr)); len += sprintf(sysbuf + len, "rbtx4939_pe1_ptr :0x%02x\n", reg_rd08(rbtx4939_pe1_ptr)); len += sprintf(sysbuf + len, "rbtx4939_pe2_ptr :0x%02x\n", reg_rd08(rbtx4939_pe2_ptr)); len += sprintf(sysbuf + len, "rbtx4939_pe3_ptr :0x%02x\n", reg_rd08(rbtx4939_pe3_ptr)); len += sprintf(sysbuf + len, "rbtx4939_vport_mode_ptr :0x%02x\n", reg_rd08(rbtx4939_vport_mode_ptr)); len += sprintf(sysbuf + len, "rbtx4939_vport_reset_ptr :0x%02x\n", reg_rd08(rbtx4939_vport_reset_ptr)); len += sprintf(sysbuf + len, "rbtx4939_vport_sout_ptr :0x%02x\n", reg_rd08(rbtx4939_vport_sout_ptr)); len += sprintf(sysbuf + len, "rbtx4939_vport_sin_ptr :0x%02x\n", reg_rd08(rbtx4939_vport_sin_ptr)); len += sprintf(sysbuf + len, "rbtx4939_7segled_ptr :0x%02x\n", reg_rd08(rbtx4939_7segled_ptr)); len += sprintf(sysbuf + len, "rbtx4939_soft_reset_ptr :0x%02x\n", reg_rd08(rbtx4939_soft_reset_ptr)); len += sprintf(sysbuf + len, "rbtx4939_sreset_enable_ptr :0x%02x\n", reg_rd08(rbtx4939_sreset_enable_ptr)); len += sprintf(sysbuf + len, "rbtx4939_reset_status_ptr :0x%02x\n", reg_rd08(rbtx4939_reset_status_ptr)); *eof = 1; return len; }
void toshiba_rbtx4927_irq_dump_pics(char *s) { u32 level0_m; u32 level0_s; u32 level1_m; u32 level1_s; u32 level2; u32 level2_p; u32 level2_s; u32 level3_m; u32 level3_s; u32 level4_m; u32 level4_s; u32 level5_m; u32 level5_s; if (s == NULL) s = "null"; level0_m = (read_c0_status() & 0x0000ff00) >> 8; level0_s = (read_c0_cause() & 0x0000ff00) >> 8; level1_m = level0_m; level1_s = level0_s & 0x87; level2 = TX4927_RD(0xff1ff6a0); level2_p = (((level2 & 0x10000)) ? 0 : 1); level2_s = (((level2 & 0x1f) == 0x1f) ? 0 : (level2 & 0x1f)); level3_m = reg_rd08(TOSHIBA_RBTX4927_IOC_INTR_ENAB) & 0x1f; level3_s = reg_rd08(TOSHIBA_RBTX4927_IOC_INTR_STAT) & 0x1f; level4_m = inb(0x21); outb(0x0A, 0x20); level4_s = inb(0x20); level5_m = inb(0xa1); outb(0x0A, 0xa0); level5_s = inb(0xa0); TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_INFO, "dump_raw_pic() "); TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_INFO, "cp0:m=0x%02x/s=0x%02x ", level0_m, level0_s); TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_INFO, "cp0:m=0x%02x/s=0x%02x ", level1_m, level1_s); TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_INFO, "pic:e=0x%02x/s=0x%02x ", level2_p, level2_s); TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_INFO, "ioc:m=0x%02x/s=0x%02x ", level3_m, level3_s); TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_INFO, "sbm:m=0x%02x/s=0x%02x ", level4_m, level4_s); TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_INFO, "sbs:m=0x%02x/s=0x%02x ", level5_m, level5_s); TOSHIBA_RBTX4927_IRQ_DPRINTK(TOSHIBA_RBTX4927_IRQ_INFO, "[%s]\n", s); }