Subject: Re: [PATCH 2/2] 8139too: Make the OQO2 automatically use PIO mode.

From: Jeff Garzik <[email-masked]>
Date: Thu, 29 May 2008 14:21:02 -0400

Dave Jones wrote:
> The OQO model 2 has an RTL8139 from Atheros that doesn't like MMIO.
> Force it to always use polled IO.
> 
> Signed-off-by: Dave Jones <[email-masked]>
> 
> --- linux-2.6.25.noarch/drivers/net/8139too.c~	2008-05-28 21:07:36.000000000 -0400
> +++ linux-2.6.25.noarch/drivers/net/8139too.c	2008-05-28 21:19:57.000000000 -0400
> @@ -951,6 +951,14 @@ static int __devinit rtl8139_init_one (s
>  			   "Use the \"8139cp\" driver for improved performance and stability.\n");
>  	}
>  
> +	if (pdev->vendor == PCI_VENDOR_ID_REALTEK &&
> +	    pdev->device == PCI_DEVICE_ID_REALTEK_8139 &&
> +	    pdev->subsystem_vendor == PCI_VENDOR_ID_ATHEROS &&
> +	    pdev->subsystem_device == PCI_DEVICE_ID_REALTEK_8139) {
> +		printk(KERN_INFO "8139too: OQO Model 2 detected. Forcing PIO\n");
> +		use_pio = 1;
> +	}
> +

these days we almost never hand-craft PCI ID checks like this...  Add 
this to the pci_device_id table, and create a new RTL8139_PIO entry for 
driver_data that has your desired end result

That way, it is trivial to expand the list simply by updating the PCI ID 
table

Table-driven approaches are really superior for things like this