Messages in this thread Patch in this message | | | Date | Sat, 20 Nov 2004 10:50:35 +0100 | From | matthieu castet <> | Subject | Re: [PATCH] smsc-ircc2: Add PnP support. |
| |
Meelis Roos wrote: > > I tried it with pnpbios (acpi=off) and it started to work after auto and > activate (but not with auto alone): > > nartsiss:/# modprobe smsc-ircc2 > found SMC SuperIO Chip (devid=0x5a rev=00 base=0x002e): LPC47N227 > smsc_superio_flat(): IrDA not enabled > smsc_superio_flat(): fir: 0x00, sir: 0x00, dma: 15, irq: 0, mode: 0x02 > FATAL: Error inserting smsc_ircc2 > (/lib/modules/2.6.10-rc2/kernel/drivers/net/irda/smsc-ircc2.ko): No such > device > nartsiss:/# echo activate > resources > pnp: Device 00:0f activated. > nartsiss:/# modprobe smsc-ircc2 > found SMC SuperIO Chip (devid=0x5a rev=00 base=0x002e): LPC47N227 > smsc_superio_flat(): fir: 0x2e8, sir: 0x100, dma: 03, irq: 5, mode: 0x0e > SMsC IrDA Controller found > IrCC version 2.0, firport 0x2e8, sirport 0x100 dma=3, irq=5 > No transceiver found. Defaulting to Fast pin select > IrDA: Registered device irda0 > >>>> Could you send me the result of : "for i in /sys/bus/pnp/devices/*; >>>> do cat $i/id $i/options; done" in order to see if other devices have >>>> missing resources ? > > > The output with pnpbios is below for comparision. > [..]
Ok, I have catch the problem : the pnpacpi parser supposed that are no resource after EndDependentFn.
Could you try this patch with pnpacpi?
Signed-Off-By: Matthieu Castet <castet.matthieu@free.fr>
--- linux-2.6.9/drivers/pnp/pnpacpi/rsparser.c.old 2004-11-12 22:55:10.000000000 +0100 +++ linux-2.6.9/drivers/pnp/pnpacpi/rsparser.c 2004-11-20 10:44:36.000000000 +0100 @@ -443,6 +443,7 @@ struct acpipnp_parse_option_s { struct pnp_option *option; + struct pnp_option *independent_option; struct pnp_dev *dev; }; @@ -506,7 +507,15 @@ parse_data->option = option; break; case ACPI_RSTYPE_END_DPF: - return AE_CTRL_TERMINATE; + //return AE_CTRL_TERMINATE; + //only one EndDependentFn is allowed + if (!parse_data->independent_option) { + pnp_warn("PnPACPI: more than one EndDependentFn"); + return AE_ERROR; + } + parse_data->option = parse_data->independent_option; + parse_data->independent_option = NULL; + break; default: pnp_warn("PnPACPI:Option type: %d not handle", res->id); return AE_ERROR; @@ -524,6 +533,7 @@ parse_data.option = pnp_register_independent_option(dev); if (!parse_data.option) return AE_ERROR; + parse_data.independent_option = parse_data.option; parse_data.dev = dev; status = acpi_walk_resources(handle, METHOD_NAME__PRS, pnpacpi_option_resource, &parse_data); | |