Beispiel #1
0
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);
}
Beispiel #3
0
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);
}