[i2c] M1563 - "Could not allocate I/O space"

Jean Delvare khali at linux-fr.org
Wed Dec 6 13:12:27 CET 2006


Hi Brian,

On Tue, 05 Dec 2006 20:56:55 -0500, Brian Hinz wrote:
> Hi,
> 
> I have a notebook with an ALI1563 southbridge that loads the kernel i2c 
> module, but fails to enable it with the message "ali1563_smbus 0000:00:03.0: 
> Could not allocate I/O space".  I dumped the dsdt from the bios and found 
> that it's allocating 15 bytes at 0x8080:
> 
>                         IO (Decode16,
>                             0x8080,             // Address Range Minimum
>                             0x8080,             // Address Range Maximum
>                             0x01,               // Address Alignment
>                             0x0E,               // Address Length
>                             )
> 
> Whereas the i2c code seems to expect 16 bytes at 0x8083:
> 
> #define  ALI1563_SMBBA     0x80
> ...
> #define ALI1563_SMB_IOSIZE 16
> 
> % lspci -xxx
> ...
> 00:03.0 ISA bridge: ALi Corporation M1563 HyperTransport South Bridge (rev 
> 20)
> 00: b9 10 63 15 0f 00 00 02 20 00 01 06 00 00 80 00
> 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 20: 00 00 00 00 00 00 00 00 00 00 00 00 bd 13 3b 10
> 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 18
> 40: b5 04 40 10 dd 00 00 00 13 42 55 11 07 90 00 10
> 50: 02 00 02 00 0d 09 01 00 00 4e 7f d8 81 00 00 00
> 60: 00 00 00 30 03 d0 00 00 00 00 00 00 00 00 00 00
> 70: 00 02 63 15 09 00 00 00 33 ff ff 87 00 00 00 00
> 80: 83 80 00 00 01 00 cc dd 00 00 ee 00 00 00 00 5f
> 90: 54 9c df dd 00 12 00 00 7b a4 99 00 01 49 00 38
> a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> b0: 55 9c 01 50 e8 01 73 33 10 00 00 00 00 00 00 00
> c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

No, I think the base address is 0x8080 not 0x8083. The 4 (?) LSB of PCI
resources have a different meaning and are not part of the actual
address.

> 
> I tried recompiling the dsdt with:
> ...
>                         IO (Decode16,
>                             0x8083,             // Range Minimum
>                             0x8083,             // Range Maximum
>                             0x01,               // Alignment
>                             0x0F,               // Length
>                             )
> 
> But still no luck.  /proc/ioports just shows that pnp is still hogging this 
> resource range.  I've also tried booting with 'pnpacpi=off', same results 
> except that /proc/ioports lists it as "motherboard" rather than "pnp".  Any 
> thoughts as to how I can correct this?

Well, first of all, keep the base address at 0x8080. Secondly, 0xE is
actually 14, not 15 (and 0xF is 15, not 16) so maybe you should try
setting the Length to 0x10. Note that I'm not familiar with the DSDT
syntax though, so maybe the 4th value is an offset and not the region
length, in which case 0xF would be correct correct.

Note that I do not have a datasheet for the ALi M1563 so I can't tell
for sure whether the I/O region size is 16. We appear to be only
accessing the 8 first addresses anyway. But 14 or 15 sounds really
weird so I doubt it is correct, and this makes 16 sound like a
reasonable size. My initial guess is that your BIOS needs some
adjustment, as you were trying to do with the DSDT.

> Also, this sounds dumb, but what 
> effect does this have on overall powermanagement/perfomance (the PMU is an 
> M7101)?  I can't find a datasheet for this device so I have no idea what it 
> defaults to...

What effect does _what_ have?

-- 
Jean Delvare



More information about the i2c mailing list