在 2.6.28 下,把 CONFIG_SERIAL_8250 = m (可以卸載) ,kernel 重編安裝後開機
開機後有看到 ttyS0 硬體存在:
00:0c: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
然後把 8250_pnp, 8250, serial_core 卸載,
看到卸載訊息:
serial 00:0c: disabled
現在載入自己的測試 driver ,起始部份長這樣:
static int __init modem_init(void)
{
int ret;
printk("modem_init()\n");
if (!request_region(MODEM_IO_BASE , 8, "serial"))
ret = -EBUSY;
printk("MSR = %x\n", inb(MSR));
printk("IER =0x%X \n", inb(IER));
...
}
載入後 request_region() 成功,但是之後讀到的 register 值都是 0xFF
找過 8250.c 很多地方,都沒頭緒,為何 kernel 的 8250 driver 可以動,自己的測試 driver 就讀不到 port data ?