Re: new PCI quirk for Toshiba Satellite?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Oct 15, 2005 at 01:29:44PM -0700, Jesse Barnes wrote:
> On Sat, Oct 15, 2005 at 09:39:06PM +0200, Stefan Richter wrote:
> > Somebody mentioned this Linux-on-Toshiba-Satellite page recently on 
> > linux1394-user: http://www.janerob.com/rob/ts5100/index.shtml
> > The patch available from there was briefly discussed in February:
> > http://marc.theaimsgroup.com/?l=linux1394-devel&t=110786507900006
> > 
> > Does this patch correct the problem on your machine?
> 
> Yes, it seems to help.  If I boot up and modprobe the driver with
> toshiba=1, everything looks fine (I have no firewire devices to test
> with).  If I modprobe it with toshiba=0, the system gets sluggish for a
> second then IRQ 11 is disabled.  I had to update the patch though, as
> shown below.
> 
> I'm not sure if the fix is proper though, maybe this should be handled
> as a PCI quirk of this Toshiba board instead?  Either way, some kind of
> fix should make it in soon, ideally to 2.6.14 or 2.6.14.1.

[Forwarding on to the PCI maintainers.]

It seems that the PCI config space isn't programmed correctly on these
machines for some reason, so the fix below allows my OHCI device to work
if I pass 'toshiba=1'.  This seems like something that belongs in the
PCI layer instead though, doesn't it?

Thanks,
Jesse

> diff -X linux-2.6.14-rc2/Documentation/dontdiff -Naur linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c
> --- linux-2.6.14-rc2.orig/drivers/ieee1394/ohci1394.c	2005-09-19 20:00:41.000000000 -0700
> +++ linux-2.6.14-rc2/drivers/ieee1394/ohci1394.c	2005-10-15 12:55:08.000000000 -0700
> @@ -169,6 +169,10 @@
>  module_param(phys_dma, int, 0644);
>  MODULE_PARM_DESC(phys_dma, "Enable physical dma (default = 1).");
>  
> +static int toshiba __initdata = 0;
> +module_param(toshiba, bool, 0);
> +MODULE_PARM_DESC(toshiba, "Toshiba Legacy-Free BIOS workaround (default=0).");
> +
>  static void dma_trm_tasklet(unsigned long data);
>  static void dma_trm_reset(struct dma_trm_ctx *d);
>  
> @@ -3222,14 +3226,28 @@
>  	struct hpsb_host *host;
>  	struct ti_ohci *ohci;	/* shortcut to currently handled device */
>  	unsigned long ohci_base;
> +	u16  toshiba_data;
>  
>  	if (version_printed++ == 0)
>  		PRINT_G(KERN_INFO, "%s", version);
>  
> +	if (toshiba) {
> +		dev->current_state = 4;
> +		pci_read_config_word(dev, PCI_CACHE_LINE_SIZE, &toshiba_data);
> +	}
> +
>          if (pci_enable_device(dev))
>  		FAIL(-ENXIO, "Failed to enable OHCI hardware");
>          pci_set_master(dev);
>  
> +	if (toshiba) {
> +		mdelay(10);
> +		pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, toshiba_data);
> +		pci_write_config_word(dev, PCI_INTERRUPT_LINE, dev->irq);
> +		pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, pci_resource_start(dev, 0));
> +		pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, pci_resource_start(dev, 1));
> + 	}
> +
>  	host = hpsb_alloc_host(&ohci1394_driver, sizeof(struct ti_ohci), &dev->dev);
>  	if (!host) FAIL(-ENOMEM, "Failed to allocate host structure");
>  
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux