Hi, On Thu, 2009-11-05 at 14:16 +0100, Ralf Baechle wrote: > > + > > + if ((LOONGSON_INTISR & LOONGSON_INTEN) & LOONGSON_INT_BIT_INT0) { > > + imr = inb(0x21) | (inb(0xa1) << 8); > > + isr = inb(0x20) | (inb(0xa0) << 8); > > + isr &= ~0x4; /* irq2 for cascade */ > > + isr &= ~imr; > > + irq = ffs(isr) - 1; > > + } > > Any reason why you're not using i8259_irq() from <asm/i8259.h> here? > That function not only gets the locking right, it also minimizes the number > of accesses to the i8259 - which even on modern silicon can be stuningly > slow. > Seems there are some differences between here and the i8259_irq(), I forget the details, perhaps "Yan Hua" can give a detail explaination. > > +#if 1 > > + pci_read_config_byte(pdev, PCI_LATENCY_TIMER, &val); > > + printk(KERN_INFO "cs5536 acc latency 0x%x\n", val); > > + pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xc0); > > +#endif > > Seems like left over debug code? > > > + return; > > +} > > And a useless return statement at the end of a void function. > Okay, will remove them later. Regards, Wu Zhangjin