Skip to contentSkip to conversation

smsc-ircc2: Add PnP support.

PATCH matthieu castet 7 participants 36 messages Nov 18, 2004 – Nov 27, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi,

I had also done a pnp patch for the smsc-ircc2 and irport 3 months ago.
Unfortunaly I don't remember where I put the patches, certainly on the laptop that it is in my parent home.

Quoted 8 lines · Jean Tourrilhes
Quoted 7 lines
Quoted 2 lines · Ville

Add PnP support to smsc-ircc2 driver.
Briefly tested with irdadump on a Dell Inpsiron 7000.

OnThanks for the patch. I slightly moved you code around, you'll find my version of your patch on my web page.

Quoted 14 lines
Quoted 5 lines

OnNow, a few comments...

On1) I don't have any SmSC chipset around, so I can't do any testing. I would appreciate other people to test your patch. Also, make sure I did not introduce mistakes in my version of the patch.

Your version works fine (irdadump works).

Quoted 5 lines

On2) I tried to apply the same code to NSC. It did not manage to read the ressource properly, and therefore the PnP code disabled the hardware, and I was no longer able to get it running (short of a reboot of the computer). The nsc-ircc has only one i/o region (dumb nsc).

try to do an "echo auto > /sys/bus/pnp/device_number/resources"

It will reenable the device.

Quoted 6 lines

I have a machine with nsc-ircc here so I think I'll try that too.

Quoted 4 lines

OnThe issue there is that if a smsc chipset has a valid PnP ID but somehow the pnp_probe fails to set it up, then the regular probe won't be able to configure it. This makes me nervous.

Yes that's the problem this pnp, if the probe failed it disable the device resource.
When I do my patch I encounter the problem : I called pnp driver after smsc_ircc_look_for_chips, so all the resources where already reserved, and the pnp probe failed and it disable the resource, and the device found with the traditional smsc_ircc_look_for_chips doesn't work.

So in my patch if I register pnp devices, I don't run smsc_ircc_look_for_chips like it is done for (ircc_fir>0)&&(ircc_sir>0) case.

Quoted 3 lines
Quoted 3 lines

On3) If the ressources are markes as disabled, you just quit with an error. Compouded with (2), this makes me doubly nervous. Wouldn't it be possible to forcefully enable those ressources ?

pnp should call automatiquely pnp_activate_dev() before probing the driver, so the resource should be activated. Have you got an example where the resource wheren't activated ?

Quoted 10 lines
Quoted 3 lines

OnThe idea there is that more and more IrDA devices are comming disabled in BIOS with no BIOS entry to enable them. Enabling those ressources would fix that and possible make smc-init redundant (I wish).

pnp_activate_dev() should probably be used to enable the device but it was only used by ISAPNP drivers so I didn't use it in this patch.

I must admit that I really don't know much about the PNP subsystem. I used the parport_pc driver as a guide. I've CC'd Adam Belay and linux-kernel in the hopes that someone can help with this stuff.

#1 lore raw
Quoted 5 lines · matthieu castet

Hi,

I had also done a pnp patch for the smsc-ircc2 and irport 3 months ago. Unfortunaly I don't remember where I put the patches, certainly on the laptop that it is in my parent home.

I've never seen you patches on the irda mailing list...

Quoted 3 lines

try to do an "echo auto > /sys/bus/pnp/device_number/resources"

It will reenable the device.

Thanks for the tip.

Quoted 13 lines
Quoted 6 lines

I have a machine with nsc-ircc here so I think I'll try that too.

Quoted 4 lines

OnThe issue there is that if a smsc chipset has a valid PnP ID but somehow the pnp_probe fails to set it up, then the regular probe won't be able to configure it. This makes me nervous.

Yes that's the problem this pnp, if the probe failed it disable the device resource.
When I do my patch I encounter the problem : I called pnp driver after smsc_ircc_look_for_chips, so all the resources where already reserved, and the pnp probe failed and it disable the resource, and the device found with the traditional smsc_ircc_look_for_chips doesn't work.

Quoted 3 lines

So in my patch if I register pnp devices, I don't run smsc_ircc_look_for_chips like it is done for (ircc_fir>0)&&(ircc_sir>0) case.

smsc_ircc_look_for_chips won't re-register the devices
configured via PnP, as smsc_ircc_present won't be able to request the region. So, I don't see the problem. And you could imagine having multiple SMSC in the box, some PnP, some not.
Note that we could put the region check earlier, but I like
the fact that the driver is still able to probe completely the chip even if the serial driver has grabbed the regions. Maybe we could split the difference and request the FIR region early on (so to fail on SMC devices already registered) and request the other ressources late (so as to completely probe even when serial is loaded).

Quoted 7 lines
Quoted 3 lines
Quoted 3 lines

On3) If the ressources are markes as disabled, you just quit with an error. Compouded with (2), this makes me doubly nervous. Wouldn't it be possible to forcefully enable those

ressources ?
pnp should call automatiquely pnp_activate_dev() before probing the driver, so the resource should be activated. Have you got an example where the resource wheren't activated ?

No, it was more that I don't understand what PnP does for
us. I don't have a SMS chipset to test on. Also, I would like to know if it remove the need of smcinit.

Thanks, have fun...

Jean

#2 lore raw
Quoted 11 lines · Jean Tourrilhes
Quoted 4 lines · matthieu castet

Hi,

I had also done a pnp patch for the smsc-ircc2 and irport 3 months ago.
Unfortunaly I don't remember where I put the patches, certainly on the laptop that it is in my parent home.

I've never seen you patches on the irda mailing list...

When I wanted to send them, I didn't find them, and after that I forgot them...

if you are still interested for the irport, I could try to ask someone to send it to me.

Quoted 11 lines
Quoted 11 lines
Quoted 7 lines

I have a machine with nsc-ircc here so I think I'll try that too.

Quoted 4 lines

OnThe issue there is that if a smsc chipset has a valid PnP ID but somehow the pnp_probe fails to set it up, then the regular probe won't be able to configure it. This makes me nervous.

Yes that's the problem this pnp, if the probe failed it disable the device resource.
When I do my patch I encounter the problem : I called pnp driver after smsc_ircc_look_for_chips, so all the resources where already reserved, and the pnp probe failed and it disable the resource, and the device found with the traditional smsc_ircc_look_for_chips doesn't work.

Quoted 7 lines
Quoted 1 line

So in my patch if I register pnp devices, I don't run smsc_ircc_look_for_chips like it is done for (ircc_fir>0)&&(ircc_sir>0) case.

smsc_ircc_look_for_chips won't re-register the devices
configured via PnP, as smsc_ircc_present won't be able to request the region. So, I don't see the problem. And you could imagine having multiple SMSC in the box, some PnP, some not.

Yes, it was just because it produce some warning message.

Quoted 12 lines

Note that we could put the region check earlier, but I like
the fact that the driver is still able to probe completely the chip even if the serial driver has grabbed the regions. Maybe we could split the difference and request the FIR region early on (so to fail on SMC devices already registered) and request the other ressources late (so as to completely probe even when serial is loaded).

Quoted 4 lines
Quoted 3 lines
Quoted 3 lines

On3) If the ressources are markes as disabled, you just quit with an error. Compouded with (2), this makes me doubly nervous. Wouldn't it be possible to forcefully enable those

Quoted 8 lines
Quoted 2 lines

ressources ?
pnp should call automatiquely pnp_activate_dev() before probing the driver, so the resource should be activated. Have you got an example where the resource wheren't activated ?

No, it was more that I don't understand what PnP does for
us. I don't have a SMS chipset to test on. Also, I would like to know if it remove the need of smcinit.

PnP is easy to understand ;)
When you probe a device, it will activate a device with the best configuration available.
When removing a device it will disable the resource of the device.
A driver could play a little with the resources configuration : try another configuration, but it is not really need.

Also PnP can provide several id for a device : for example for my smsc device, I have SMCf010 and PNP0510 or PNP0511. So in this case we should load the smsc driver first, otherwise for example a pnp version of irport could register the device and it is not available for smsc (PnP will see that there is a driver attached, and not give it to the smsc probe).

Quoted 5 lines

Thanks, have fun...

Jean

Matthieu

#3 lore raw
Quoted 12 lines · matthieu castet
Quoted 11 lines · Jean Tourrilhes
Quoted 8 lines · matthieu castet
Quoted 3 lines
Quoted 3 lines

On3) If the ressources are markes as disabled, you just quit with an error. Compouded with (2), this makes me doubly nervous. Wouldn't it be possible to forcefully enable those

ressources ?
pnp should call automatiquely pnp_activate_dev() before probing the driver, so the resource should be activated. Have you got an example where the resource wheren't activated ?

Quoted 7 lines
Quoted 4 lines

No, it was more that I don't understand what PnP does for
us. I don't have a SMS chipset to test on. Also, I would like to know if it remove the need of smcinit.

PnP is easy to understand ;)
When you probe a device, it will activate a device with the best configuration available.

So can we just remove the IORESOURCE_DISABLED tests?

And what about the pnp_*_valid() tests?

parport_pc (which I used as a guide) does both tests but 8250_pnp doesn't do either.

Signature · 3 lines
Ville Syrjälä
[email protected]
http://www.sci.fi/~syrjala/
#4 lore raw
Quoted 21 lines · Ville Syrjälä
Quoted 12 lines · matthieu castet
Quoted 11 lines · Jean Tourrilhes
Quoted 8 lines · matthieu castet
Quoted 3 lines
Quoted 3 lines

On3) If the ressources are markes as disabled, you just quit with an error. Compouded with (2), this makes me doubly nervous. Wouldn't it be possible to forcefully enable those

ressources ?
pnp should call automatiquely pnp_activate_dev() before probing the driver, so the resource should be activated. Have you got an example where the resource wheren't activated ?

Quoted 7 lines
Quoted 4 lines

No, it was more that I don't understand what PnP does for
us. I don't have a SMS chipset to test on. Also, I would like to know if it remove the need of smcinit.

PnP is easy to understand ;)
When you probe a device, it will activate a device with the best configuration available.

Quoted 6 lines

So can we just remove the IORESOURCE_DISABLED tests?

And what about the pnp_*_valid() tests?

parport_pc (which I used as a guide) does both tests but 8250_pnp doesn't do either.

Parport_pc uses them because resources could potentially be disabled, but the parport could still be functional. Therefore, it must check. It is probably ok to not check on most hardware. Nonetheless, it's best to play it safe, and always verify the resource configuration.

Thanks,
Adam

#5 lore raw
In reply to matthieu castet

mc> try to do an "echo auto > /sys/bus/pnp/device_number/resources" mc>
mc> It will reenable the device.

I tried this on my Toshiba Satellite 1800-314 and the device gets IO resources but is still disabled. echo activate > ... will enable it but the smc-ircc2 driver still finds that the device is disabled (in 2.6.10-rc2+yesterdays BK):

nartsiss:~# cat /sys/bus/pnp/devices/00\:0a/options
Dependent: 01 - Priority acceptable
   port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
   port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
   port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
   port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding
nartsiss:~# cat /sys/bus/pnp/devices/00\:0a/resources
state = disabled
nartsiss:~# echo auto > /sys/bus/pnp/devices/00\:0a/resources
nartsiss:~# cat /sys/bus/pnp/devices/00\:0a/resources
state = disabled
io 0x2e8-0x2ef
nartsiss:~# echo activate > /sys/bus/pnp/devices/00\:0a/resources
nartsiss:~# cat /sys/bus/pnp/devices/00\:0a/resources
state = active
io 0x2e8-0x2ef
nartsiss:~# modprobe smsc-ircc2
FATAL: Error inserting smsc_ircc2
(/lib/modules/2.6.10-rc2/kernel/drivers/net/irda/smsc-ircc2.ko): No such device
nartsiss:~# dmesg|tail -5
pnp: Device 00:0a activated.
NET: Registered protocol family 23
found SMC SuperIO Chip (devid=0x5a rev=00 base=0x002e): LPC47N227
smsc_superio_flat(): IrDA not enabled
smsc_superio_flat(): fir: 0x00, sir: 0x2e8, dma: 15, irq: 0, mode: 0x02

Looks like there is also a enable/disable bit in the actual LPC device, or maybe it needs also a fir address and/or irq?

Signature · 1 line
Meelis Roos
#6 lore raw
Quoted 8 lines · Meelis Roos

mc> try to do an "echo auto > /sys/bus/pnp/device_number/resources" mc> mc> It will reenable the device.

I tried this on my Toshiba Satellite 1800-314 and the device gets IO resources but is still disabled. echo activate > ... will enable it but the smc-ircc2 driver still finds that the device is disabled (in 2.6.10-rc2+yesterdays BK):

Quoted 9 lines
nartsiss:~# cat /sys/bus/pnp/devices/00\:0a/options
Dependent: 01 - Priority acceptable
   port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
   port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
   port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
   port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding

that's very strange : you must have 2 io entries, 1 dma entry and an irq entry. Could you try pnpacpi from mm series ?
Any warning from pnpbios at startup ?
A laptop of the friend have wrong pnpbios entries...

Also make sure you don't force in your bios the device to be a sir device.

Quoted 6 lines
nartsiss:~# cat /sys/bus/pnp/devices/00\:0a/resources
state = disabled
nartsiss:~# echo auto > /sys/bus/pnp/devices/00\:0a/resources
nartsiss:~# cat /sys/bus/pnp/devices/00\:0a/resources
state = disabled
io 0x2e8-0x2ef

activate is not important : here pnp had found the io resources

Quoted 4 lines
nartsiss:~# echo activate > /sys/bus/pnp/devices/00\:0a/resources
nartsiss:~# cat /sys/bus/pnp/devices/00\:0a/resources
state = active
io 0x2e8-0x2ef

^^^^^^^^^^^^^^^^

Quoted 14 lines
nartsiss:~# modprobe smsc-ircc2
FATAL: Error inserting smsc_ircc2
(/lib/modules/2.6.10-rc2/kernel/drivers/net/irda/smsc-ircc2.ko): No such device
nartsiss:~# dmesg|tail -5
pnp: Device 00:0a activated.
NET: Registered protocol family 23
found SMC SuperIO Chip (devid=0x5a rev=00 base=0x002e): LPC47N227
smsc_superio_flat(): IrDA not enabled
smsc_superio_flat(): fir: 0x00, sir: 0x2e8, dma: 15, irq: 0, mode: 0x02

Looks like there is also a enable/disable bit in the actual LPC device, or maybe it needs also a fir address and/or irq?

#7 lore raw
Quoted 20 lines · matthieu castet
Quoted 8 lines · Meelis Roos

mc> try to do an "echo auto > /sys/bus/pnp/device_number/resources" mc> mc> It will reenable the device.

I tried this on my Toshiba Satellite 1800-314 and the device gets IO resources but is still disabled. echo activate > ... will enable it but the smc-ircc2 driver still finds that the device is disabled (in 2.6.10-rc2+yesterdays BK):

Quoted 9 lines
nartsiss:~# cat /sys/bus/pnp/devices/00\:0a/options
Dependent: 01 - Priority acceptable
   port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
   port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
   port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
   port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding
Quoted 2 lines

that's very strange : you must have 2 io entries, 1 dma entry and an irq entry. Could you try pnpacpi from mm series ?

no need : it is in rc2.
So do you use pnpacpi ?
If so, could you send your dsdt and try with pnpbios?

Matthieu

#8 lore raw
Quoted 5 lines
Quoted 2 lines

that's very strange : you must have 2 io entries, 1 dma entry and an irq entry. Could you try pnpacpi from mm series ?

no need : it is in rc2.
So do you use pnpacpi ?
If so, could you send your dsdt and try with pnpbios?

# CONFIG_ISAPNP is not set
CONFIG_PNPBIOS=y
CONFIG_PNPBIOS_PROC_FS=y
CONFIG_PNPACPI=y

dmesg tells
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: PnP ACPI: found 13 devices
PnPBIOS: Disabled by ACPI

Will try disabling pnpacpi today.

How do I extract DSDT?

Signature · 1 line
Meelis Roos ([email protected])      http://www.cs.ut.ee/~mroos/
#10 lore raw
Quoted 6 lines · Meelis Roos
Quoted 2 lines

So do you use pnpacpi ?
If so, could you send your dsdt and try with pnpbios?

DSDT is here: http://www.cs.ut.ee/~mroos/toshsat1800_dsdt.img

hum, your bios seem to build dynamically the resources (need an acpi expert for confirmation)

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 ?

#11 lore raw
Quoted 1 line

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 ?

PNP0c01
PNP0200
PNP0800
PNP0c04
PNP0303
PNP0f13
PNP0b00
PNP0c02
PNP0700
port 0x3f0-0x3f0, align 0x0, size 0x6, 16-bit address decoding port 0x3f7-0x3f7, align 0x0, size 0x1, 16-bit address decoding irq 6 High-Edge
dma 2 8-bit compatible
PNP0501
Dependent: 01 - Priority acceptable
port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding
SMCf010
Dependent: 01 - Priority acceptable
port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding
PNP0401
Dependent: 01 - Priority acceptable
port 0x378-0x378, align 0x0, size 0x3, 16-bit address decoding port 0x778-0x778, align 0x0, size 0x3, 16-bit address decoding irq 7 High-Edge
Dependent: 02 - Priority acceptable
port 0x278-0x278, align 0x0, size 0x3, 16-bit address decoding port 0x678-0x678, align 0x0, size 0x3, 16-bit address decoding irq 5 High-Edge
Dependent: 03 - Priority acceptable
port 0x3bc-0x3bc, align 0x0, size 0x3, 16-bit address decoding port 0x7bc-0x7bc, align 0x0, size 0x3, 16-bit address decoding irq 7 High-Edge
TOS6200

Signature · 1 line
Meelis Roos ([email protected])
#12 lore raw
Quoted 16 lines · Meelis Roos
Quoted 1 line

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 ?

PNP0c01
PNP0200
PNP0800
PNP0c04
PNP0303
PNP0f13
PNP0b00
PNP0c02
PNP0700
port 0x3f0-0x3f0, align 0x0, size 0x6, 16-bit address decoding port 0x3f7-0x3f7, align 0x0, size 0x1, 16-bit address decoding irq 6 High-Edge
dma 2 8-bit compatible

floppy : seem ok

Quoted 9 lines

PNP0501
Dependent: 01 - Priority acceptable
port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding

serial miss irq

Quoted 9 lines

SMCf010
Dependent: 01 - Priority acceptable
port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding

irda : miss io,irq,dma

Quoted 5 lines

PNP0401
Dependent: 01 - Priority acceptable
port 0x378-0x378, align 0x0, size 0x3, 16-bit address decoding port 0x778-0x778, align 0x0, size 0x3, 16-bit address decoding irq 7 High-Edge

Quoted 8 lines

Dependent: 02 - Priority acceptable
port 0x278-0x278, align 0x0, size 0x3, 16-bit address decoding port 0x678-0x678, align 0x0, size 0x3, 16-bit address decoding irq 5 High-Edge
Dependent: 03 - Priority acceptable
port 0x3bc-0x3bc, align 0x0, size 0x3, 16-bit address decoding port 0x7bc-0x7bc, align 0x0, size 0x3, 16-bit address decoding irq 7 High-Edge

parallel port: miss dma

Quoted 2 lines

TOS6200

Could it be an acpi parsing problem ?
Is there a easy way to use ACPI_DUMP_RESOURCE_LIST in order to find all the resource find by acpi in order to see if it is an acpi problem or a pnpacpi problem ?

Matthieu

PS : I CC the message to acpi people : look http://marc.theaimsgroup.com/?t=110075024500002&r=1&w=2 for the begining.

-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE FREE OODBMS DOWNLOAD - A multidimensional database that combines robust object and relational technologies, making it a perfect match for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8

#13 lore raw

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
Quoted 1 line
Quoted 1 line
Quoted 1 line

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.

Quoted 47 lines
Quoted 5 lines

PNP0c01
PNP0200
PNP0800
PNP0c04
PNP0303

Quoted 8 lines

PNP0f13
PNP0b00
PNP0c02
PNP0700
port 0x3f0-0x3f0, align 0x0, size 0x6, 16-bit address decoding port 0x3f7-0x3f7, align 0x0, size 0x1, 16-bit address decoding irq 6 High-Edge
dma 2 8-bit compatible

floppy : seem ok

Quoted 9 lines

PNP0501
Dependent: 01 - Priority acceptable
port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding

serial miss irq

Quoted 9 lines

SMCf010
Dependent: 01 - Priority acceptable
port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding

irda : miss io,irq,dma

Quoted 5 lines

PNP0401
Dependent: 01 - Priority acceptable
port 0x378-0x378, align 0x0, size 0x3, 16-bit address decoding port 0x778-0x778, align 0x0, size 0x3, 16-bit address decoding irq 7 High-Edge

Quoted 8 lines

Dependent: 02 - Priority acceptable
port 0x278-0x278, align 0x0, size 0x3, 16-bit address decoding port 0x678-0x678, align 0x0, size 0x3, 16-bit address decoding irq 5 High-Edge
Dependent: 03 - Priority acceptable
port 0x3bc-0x3bc, align 0x0, size 0x3, 16-bit address decoding port 0x7bc-0x7bc, align 0x0, size 0x3, 16-bit address decoding irq 7 High-Edge

Quoted 3 lines

parallel port: miss dma

Quoted 2 lines

TOS6200

PNP0c01
PNP0200
PNP0000
PNP0100
PNP0800
PNP0c04
PNP0303
PNP0f13
irq 12 High-Edge
PNP0b00
PNP0c02
PNP0700
port 0x3f0-0x3f0, align 0x0, size 0x6, 16-bit address decoding port 0x3f7-0x3f7, align 0x0, size 0x1, 16-bit address decoding irq 6 High-Edge
dma 2 8-bit byte-count compatible
PNP0501
irq 3,4,5,7,10,11 High-Edge
Dependent: 01 - Priority acceptable
port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding
SMCf010
PNP0510
port 0x100-0x130, align 0xf, size 0x8, 16-bit address decoding irq 3,4,5,7,10,11 High-Edge
dma 1,2,3 16-bit byte-count compatible
Dependent: 01 - Priority acceptable
port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding
PNP0401
dma 1,2,3 8-bit byte-count compatible
Dependent: 01 - Priority acceptable
port 0x378-0x378, align 0x0, size 0x3, 16-bit address decoding port 0x778-0x778, align 0x0, size 0x3, 16-bit address decoding irq 7 High-Edge
Dependent: 02 - Priority acceptable
port 0x278-0x278, align 0x0, size 0x3, 16-bit address decoding port 0x678-0x678, align 0x0, size 0x3, 16-bit address decoding irq 5 High-Edge
Dependent: 03 - Priority acceptable
port 0x3bc-0x3bc, align 0x0, size 0x3, 16-bit address decoding port 0x7bc-0x7bc, align 0x0, size 0x3, 16-bit address decoding irq 7 High-Edge
PNP0a03
PNP0e03
PNP0e00
Dependent: 01 - Priority acceptable
port 0x3e0-0x3e0, align 0x0, size 0x2, 16-bit address decoding irq <none> High-Edge
Dependent: 02 - Priority acceptable
port 0x3e0-0x3e0, align 0x0, size 0x2, 16-bit address decoding irq 3,4,5,7,10,11 High-Edge

Signature · 8 lines
Meelis Roos ([email protected])


-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8
#14 lore raw
Quoted 18 lines · Meelis Roos

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
Quoted 5 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line

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?

drivers/pnp/pnpacpi/rsparser.c renamed from drivers/pnp/pnpacpi/rsparser.c.old +11 -1
@@ -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);
#15 lore raw
Quoted 3 lines

Ok, I have catch the problem : the pnpacpi parser supposed that are no resource after EndDependentFn.

Could you try this patch with pnpacpi?

Yes, it gives full options (and resources after "auto"). But smsc-ircc2 still does not load even after "activate" with pnpacpi. It loads with pnpbios after auto and activate.

Signature · 1 line
Meelis Roos ([email protected])
#16 lore raw
Quoted 7 lines · Meelis Roos
Quoted 3 lines

Ok, I have catch the problem : the pnpacpi parser supposed that are no resource after EndDependentFn.

Could you try this patch with pnpacpi?

Yes, it gives full options (and resources after "auto"). But smsc-ircc2 still does not load even after "activate" with pnpacpi. It loads with pnpbios after auto and activate.

thanks

Could I have the log from smsc-ircc2 when it failed with pnpacpi ?

regards

Matthieu

#17 lore raw
Quoted 1 line

Could I have the log from smsc-ircc2 when it failed with pnpacpi ?

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

Signature · 1 line
Meelis Roos ([email protected])
#18 lore raw
Quoted 7 lines · Meelis Roos
Quoted 1 line

Could I have the log from smsc-ircc2 when it failed with pnpacpi ?

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

Thanks, it seem that pnpacpi_set_resources have a problem. I hope Shaohua Li (who write it) could ckeck it.

regards

Matthieu

#19 lore raw
In reply to Meelis Roos
Quoted 7 lines · Meelis Roos
Quoted 1 line

Could I have the log from smsc-ircc2 when it failed with pnpacpi ?

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

just for curiosity, when you have time, could try pnpacpi and jean PNP smsc patch?

It sould find the correct resources because there are provided by PnP layer, but if the resources are not well allocated by PnPacpi, the device shouldn't work.

thanks

Matthieu

#20 lore raw
Quoted 8 lines · matthieu castet
Quoted 7 lines · Meelis Roos
Quoted 1 line

Could I have the log from smsc-ircc2 when it failed with pnpacpi ?

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

Quoted 6 lines

just for curiosity, when you have time, could try pnpacpi and jean PNP smsc patch?

It sould find the correct resources because there are provided by PnP layer, but if the resources are not well allocated by PnPacpi, the device shouldn't work.

Could you please attach the output of 'cat 00:0a/resources' (0a is the device, right?). ACPI spec said set resource should be according to the output of current resource. That is we should build a template according to current resource (_CRS). If _CRS doesn't return a correct resource templete, set resource will fail.

Adam, I think a boot option (such as pnpacpi=off) is required. Users possibly want to use pnpbios or BIOS is buggy.

Thanks,
Shaohua

#21 lore raw
Quoted 2 lines

Adam, I think a boot option (such as pnpacpi=off) is required. Users possibly want to use pnpbios or BIOS is buggy.

Yes, agreed. Right now just using ACPI turns pnpbios off, it probably should be using pnpacpi that turns pnpbios off. And turning pnpacpi off should be made possible.

Signature · 1 line
Meelis Roos ([email protected])      http://www.cs.ut.ee/~mroos/
#22 lore raw
In reply to Li Shaohua
Quoted 2 lines

Adam, I think a boot option (such as pnpacpi=off) is required. Users possibly want to use pnpbios or BIOS is buggy.

Additionally, I see more pnp devices with pnpbios (16) than with pnpbios (13). Is this normal?

Signature · 1 line
Meelis Roos ([email protected])
#23 lore raw
In reply to Li Shaohua
Quoted 5 lines

Could you please attach the output of 'cat 00:0a/resources' (0a is the device, right?). ACPI spec said set resource should be according to the output of current resource. That is we should build a template according to current resource (_CRS). If _CRS doesn't return a correct resource templete, set resource will fail.

resources after auto and activate and options are now exactly the same after the pnpacpi patch:

resources:

state = active
io 0x100-0x107
io 0x2e8-0x2ef
irq 5
dma 3

options:

port 0x100-0x130, align 0xf, size 0x8, 16-bit address decoding irq 3,4,5,7,10,11 High-Edge
dma 1,2,3 16-bit compatible
Dependent: 01 - Priority acceptable
port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 02 - Priority acceptable
port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 03 - Priority acceptable
port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
Dependent: 04 - Priority acceptable
port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding

With pnpbios, module loading gives this:

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
divert: not allocating divert_blk for non-ethernet device irda0
IrDA: Registered device irda0

With pnpacpi, module loading gives this:

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

Haven't tried Villes patch yet, will do today evening.

Signature · 1 line
Meelis Roos ([email protected])
#24 lore raw
Quoted 7 lines · Meelis Roos
Quoted 5 lines

Could you please attach the output of 'cat 00:0a/resources' (0a is the device, right?). ACPI spec said set resource should be according to the output of current resource. That is we should build a template according to current resource (_CRS). If _CRS doesn't return a correct resource templete, set resource will fail.

Hi,

could you try this patch with the previous one. (You must enable ACPI DEBUG in kernel config)

When you activate the device, it sould print usefull information. Could attach the output, please.

Matthieu

drivers/pnp/pnpacpi/rsparser.c renamed from drivers/pnp/pnpacpi/rsparser.c.old +18 -0
@@ -29,6 +29,18 @@
 #define valid_IRQ(i) (((i) != 0) && ((i) != 2))
 #endif
 
+static void debug_pnp(struct acpi_resource *res, int line) {
+	int tmp = acpi_dbg_level;
+	int tmp1 = acpi_dbg_layer;
+
+	acpi_dbg_level = 0x00010000;
+	acpi_dbg_layer = 0x00000100;
+	printk("******%d*******\n",line);
+	ACPI_DUMP_RESOURCE_LIST(res);
+	acpi_dbg_level = tmp;
+	acpi_dbg_layer = tmp1;
+}
+	
 /*
  * Allocated Resources
  */
@@ -152,6 +164,8 @@
 {
 	struct pnp_resource_table * res_table = (struct pnp_resource_table *)data;
 
+	debug_pnp(res,__LINE__);
+
 	switch (res->id) {
 	case ACPI_RSTYPE_IRQ:
 		if ((res->data.irq.number_of_interrupts > 0) &&
@@ -454,6 +469,8 @@
 	struct pnp_dev *dev = parse_data->dev;
 	struct pnp_option *option = parse_data->option;
 
+	debug_pnp(res,__LINE__);
+
 	switch (res->id) {
 		case ACPI_RSTYPE_IRQ:
 			pnpacpi_parse_irq_option(option, &res->data.irq);
@@ -816,5 +843,7 @@
 		resource ++;
 		i ++;
 	}
+	debug_pnp(res,__LINE__);
+
 	return 0;
 }
#25 lore raw
Quoted 1 line

could you try this patch with the previous one. (You must enable ACPI DEBUG in kernel config)

After fixing one res -> resource, it compiled.

The output is uninteresting - it only prints one debug message during echoing activate to resources:

******845*******
pnp: Device 00:0a activated.
NET: Registered protocol family 23
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

Signature · 1 line
Meelis Roos ([email protected])
#26 lore raw
Quoted 4 lines · Meelis Roos
Quoted 1 line

could you try this patch with the previous one. (You must enable ACPI DEBUG in kernel config)

After fixing one res -> resource, it compiled.

Oups that's the wrong fix : there was a line missing in my previous patch

Quoted 3 lines

The output is uninteresting - it only prints one debug message during echoing activate to resources:

That's because resource point at the end of the resources list, so there is nothing to read. With this patch, you should see something.

Quoted 7 lines

******845*******
pnp: Device 00:0a activated.
NET: Registered protocol family 23
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

thanks for testing

Matthieu

pnp/pnpacpi/rsparser.c renamed from pnp/pnpacpi/rsparser.c.int +19 -0
@@ -29,6 +29,18 @@
 #define valid_IRQ(i) (((i) != 0) && ((i) != 2))
 #endif
 
+static void debug_pnp(struct acpi_resource *res, int line) {
+	int tmp = acpi_dbg_level;
+	int tmp1 = acpi_dbg_layer;
+
+	acpi_dbg_level = 0x00010000;
+	acpi_dbg_layer = 0x00000100;
+	printk("******%d*******\n",line);
+	ACPI_DUMP_RESOURCE_LIST(res);
+	acpi_dbg_level = tmp;
+	acpi_dbg_layer = tmp1;
+}
+	
 /*
  * Allocated Resources
  */
@@ -152,6 +164,8 @@
 {
 	struct pnp_resource_table * res_table = (struct pnp_resource_table *)data;
 
+	debug_pnp(res,__LINE__);
+
 	switch (res->id) {
 	case ACPI_RSTYPE_IRQ:
 		if ((res->data.irq.number_of_interrupts > 0) &&
@@ -455,6 +469,8 @@
 	struct pnp_dev *dev = parse_data->dev;
 	struct pnp_option *option = parse_data->option;
 
+	debug_pnp(res,__LINE__);
+
 	switch (res->id) {
 		case ACPI_RSTYPE_IRQ:
 			pnpacpi_parse_irq_option(option, &res->data.irq);
@@ -765,6 +781,7 @@
 	/* pnpacpi_build_resource_template allocates extra mem */
 	int res_cnt = (buffer->length - 1)/sizeof(struct acpi_resource) - 1;
 	struct acpi_resource *resource = (struct acpi_resource*)buffer->pointer;
+	struct acpi_resource *res = resource;
 	int port = 0, irq = 0, dma = 0, mem = 0;
 
 	pnp_dbg("res cnt %d", res_cnt);
@@ -826,5 +843,7 @@
 		resource ++;
 		i ++;
 	}
+	debug_pnp(res,__LINE__);
+
 	return 0;
 }
#27 lore raw
Quoted 1 line

That's because resource point at the end of the resources list, so there is nothing to read. With this patch, you should see something.

On bootup there are loads on lines 167 and 472.

On auto there are none.

On activate there are
******846*******
pnp: Device 00:0a activated.

On modprobe smsc-ircc2 there are no more debug lines, just 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

And I checked that I am using the new patch.

Signature · 1 line
Meelis Roos ([email protected])
#28 lore raw

Hi,

Quoted 11 lines · Meelis Roos
Quoted 1 line

That's because resource point at the end of the resources list, so there is nothing to read. With this patch, you should see something.

On bootup there are loads on lines 167 and 472.

On auto there are none.

On activate there are
******846*******
pnp: Device 00:0a activated.

Quoted 7 lines

On modprobe smsc-ircc2 there are no more debug lines, just 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

And I checked that I am using the new patch.

thanks.
it seems there is no resource in your __CRS. Like Shaohua said the acpi spec say that it must return valid template even if the device is disable [1].

Just for confirmation, could you try this patch. It should enable pnp_dbg message and print your _CRS when you activate the device. If there is nothing between ******574******* and ******857*******, you bios is likely broken.

thanks

Matthieu CASTET

[1]
If a device is disabled, then _CRS returns a valid resource template for the device, but the actual resource assignments in the return byte stream are ignored. If the device is disabled when _CRS is called, it must remain disabled.

drivers/pnp/pnpacpi/rsparser.c renamed from drivers/pnp/pnpacpi/rsparser.c.int +30 -0
@@ -29,6 +29,22 @@
 #define valid_IRQ(i) (((i) != 0) && ((i) != 2))
 #endif
 
+static int first = 1;
+static void debug_pnp(struct acpi_resource *res, int line) {
+	int tmp = acpi_dbg_level;
+	int tmp1 = acpi_dbg_layer;
+	if (!first)
+		return;
+	first = 0;
+
+	acpi_dbg_level = 0x00010000;
+	acpi_dbg_layer = 0x00000100;
+	printk("******%d*******\n",line);
+	ACPI_DUMP_RESOURCE_LIST(res);
+	acpi_dbg_level = tmp;
+	acpi_dbg_layer = tmp1;
+}
+	
 /*
  * Allocated Resources
  */
@@ -152,6 +168,8 @@
 {
 	struct pnp_resource_table * res_table = (struct pnp_resource_table *)data;
 
+	debug_pnp(res,__LINE__);
+
 	switch (res->id) {
 	case ACPI_RSTYPE_IRQ:
 		if ((res->data.irq.number_of_interrupts > 0) &&
@@ -233,6 +251,7 @@
 	/* Blank the resource table values */
 	pnp_init_resource_table(res);
 
+	first = 1;
 	return acpi_walk_resources(handle, METHOD_NAME__CRS, pnpacpi_allocated_resource, res);
 }
 
@@ -455,6 +474,8 @@
 	struct pnp_dev *dev = parse_data->dev;
 	struct pnp_option *option = parse_data->option;
 
+	//debug_pnp(res,__LINE__);
+
 	switch (res->id) {
 		case ACPI_RSTYPE_IRQ:
 			pnpacpi_parse_irq_option(option, &res->data.irq);
@@ -535,6 +556,7 @@
 		return AE_ERROR;
 	parse_data.independent_option = parse_data.option;
 	parse_data.dev = dev;
+	first=1;
 	status = acpi_walk_resources(handle, METHOD_NAME__PRS, 
 		pnpacpi_option_resource, &parse_data);
 
@@ -548,6 +570,9 @@
 	void *data)
 {
 	int *res_cnt = (int *)data;
+
+	debug_pnp(res,__LINE__);
+
 	switch (res->id) {
 	case ACPI_RSTYPE_IRQ:
 	case ACPI_RSTYPE_EXT_IRQ:
@@ -603,6 +628,7 @@
 	int res_cnt = 0;
 	acpi_status status;
 
+	first = 1;
 	status = acpi_walk_resources(handle, METHOD_NAME__CRS, 
 		pnpacpi_count_resources, &res_cnt);
 	if (ACPI_FAILURE(status)) {
@@ -765,6 +791,7 @@
 	/* pnpacpi_build_resource_template allocates extra mem */
 	int res_cnt = (buffer->length - 1)/sizeof(struct acpi_resource) - 1;
 	struct acpi_resource *resource = (struct acpi_resource*)buffer->pointer;
+	struct acpi_resource *res = resource;
 	int port = 0, irq = 0, dma = 0, mem = 0;
 
 	pnp_dbg("res cnt %d", res_cnt);
@@ -826,5 +853,8 @@
 		resource ++;
 		i ++;
 	}
+	first=1;
+	debug_pnp(res,__LINE__);
+
 	return 0;
 }
drivers/pnp/pnpacpi/pnpacpi.h renamed from drivers/pnp/pnpacpi/pnpacpi.h.old +2 -0
@@ -1,6 +1,8 @@
 #ifndef ACPI_PNP_H
 #define ACPI_PNP_H
 
+#define DEBUG
+
 #include <acpi/acpi_bus.h>
 #include <linux/acpi.h>
 #include <linux/pnp.h>
#29 lore raw
Quoted 2 lines

Just for confirmation, could you try this patch. It should enable pnp_dbg message and print your _CRS when you activate the device. If there is nothing between ******574******* and ******857*******, you bios is likely broken.

activate:
******574*******
pnp: Res cnt 4
pnp: res cnt 4
pnp: Encode io
pnp: Encode irq
pnp: Encode io
pnp: Encode dma
******857*******
pnp: Device 00:0a activated.

So it appears that there is something between 574 and 857.

modprobe is the same:
NET: Registered protocol family 23
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

Signature · 1 line
Meelis Roos ([email protected])
#30 lore raw
Quoted 15 lines · Meelis Roos
Quoted 2 lines

Just for confirmation, could you try this patch. It should enable pnp_dbg message and print your _CRS when you activate the device. If there is nothing between ******574******* and ******857*******, you bios is likely broken.

activate:
******574*******
pnp: Res cnt 4
pnp: res cnt 4
pnp: Encode io
pnp: Encode irq
pnp: Encode io
pnp: Encode dma
******857*******
pnp: Device 00:0a activated.

Quoted 2 lines

So it appears that there is something between 574 and 857.

Are you sure you have enable ACPI DEBUG ? You should have CONFIG_ACPI_DEBUG=y in your .config

Quoted 7 lines

modprobe is the same:
NET: Registered protocol family 23
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

#31 lore raw
Quoted 18 lines · matthieu castet
Quoted 16 lines · Meelis Roos
Quoted 2 lines

Just for confirmation, could you try this patch. It should enable pnp_dbg message and print your _CRS when you activate the device. If there is nothing between ******574******* and ******857*******, you bios is likely broken.

activate:
******574*******
pnp: Res cnt 4
pnp: res cnt 4
pnp: Encode io
pnp: Encode irq
pnp: Encode io
pnp: Encode dma
******857*******
pnp: Device 00:0a activated.

Quoted 6 lines
Quoted 2 lines

So it appears that there is something between 574 and 857.

Are you sure you have enable ACPI DEBUG ? You should have CONFIG_ACPI_DEBUG=y in your .config

With this patch, it should be work better (no need to remove the previous patch)

Matthieu

PS : I should find a better way to make patch....

drivers/pnp/pnpacpi/Makefile renamed from drivers/pnp/pnpacpi/Makefile.old +5 -0
@@ -1,5 +1,10 @@
 #
 # Makefile for the kernel PNPACPI driver.
 #
+ifdef CONFIG_ACPI_DEBUG
+  ACPI_CFLAGS	+= -DACPI_DEBUG_OUTPUT
+endif
+
+EXTRA_CFLAGS	+= $(ACPI_CFLAGS)
 
 obj-y := core.o rsparser.o
#32 lore raw
In reply to matthieu castet
Quoted 1 line

Are you sure you have enable ACPI DEBUG ?

Oops, I did not. Now with ACPi DEBUG enabled and the Makefile patch applied:

activate:
******574*******
Resource structure 0.
Io Resource
16 bit decode
Range minimum base: 00000000
Range maximum base: 00000000
Alignment: 00000001
Range Length: 00000000
Resource structure 1.
IRQ Resource
Edge Triggered
Active High
Exclusive
0 Interrupts ( )
Resource structure 2.
Io Resource
16 bit decode
Range minimum base: 00000000
Range maximum base: 00000000
Alignment: 00000001
Range Length: 00000000
Resource structure 3.
DMA Resource
Compatibility mode
Not a Bus Master
16 bit only transfer
Number of Channels: 0 ( )
Resource structure 4.
end_tag Resource
pnp: Res cnt 4
pnp: res cnt 4
pnp: Encode io
pnp: Encode irq
pnp: Encode io
pnp: Encode dma
******857*******
Resource structure 0.
Io Resource
16 bit decode
Range minimum base: 00000100
Range maximum base: 00000107
Alignment: 00000000
Range Length: 00000008
Resource structure 1.
IRQ Resource
Edge Triggered
Active High
Exclusive
1 Interrupts ( 5 )
Resource structure 2.
Io Resource
16 bit decode
Range minimum base: 000002E8
Range maximum base: 000002EF
Alignment: 00000000
Range Length: 00000008
Resource structure 3.
DMA Resource
Compatibility mode
Not a Bus Master
16 bit only transfer
Number of Channels: 1 ( 3 )
Resource structure 4.
end_tag Resource
pnp: Device 00:0a activated.

modprobe is still the same.

Signature · 1 line
Meelis Roos ([email protected])
#34 lore raw
In reply to Meelis Roos
Quoted 4 lines · Meelis Roos

I tried it with pnpbios (acpi=off) and it started to work after auto and activate (but not with auto alone):

Quoted 16 lines
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

It is using the legacy probe instead of the pnp probe. Did you actually apply the pnp patch?

I'm not entirely sure what has been discussed since somebody removed me from the CC list...

Signature · 10 lines
Ville Syrjälä
[email protected]
http://www.sci.fi/~syrjala/


-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8
#35 lore raw
Quoted 20 lines · Ville Syrjälä
Quoted 16 lines · Meelis Roos

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
Quoted 2 lines

It is using the legacy probe instead of the pnp probe. Did you actually apply the pnp patch?

No he doesn't use the pnp patch : only latest snapshot for the stable Linux kernel.

But there is still the problem with pnpacpi that is needed to fixed.

Quoted 2 lines

I'm not entirely sure what has been discussed since somebody removed me from the CC list...