In your DSDT, look at for example, in the UPBI method, the Store operations. In these operations:
Store (^^PCI0.LPC.EC0.BTDC, Index (PBIF, One))
Store (^^PCI0.LPC.EC0.BATV, Index (PBIF, 0x04))
you're referencing the field definitions:
BTDC, 16,
BATV, 16,
which are 16 bit. Per the ACPI spec, the EmbeddedControl region must use byte access. So you rewrite those fields as pairs of 8 bit fields and do the access byte at a time. Take a look at the differences in my dsdt for the BTDC, BTFC, BTCT, BTRC, BTPV fields for examples on how to do this. I don't have time to do these edits for other platforms myself.
When I look at the methods used under Device (BAT0), I can see the followings:
In the UPBI method:
Store (^^PCI0.LPC.EC0.BCLB, Local0)
Store (^^PCI0.LPC.EC0.BCHB, Local1)
***
Store (^^PCI0.LPC.EC0.BVLB, Local0)
Store (^^PCI0.LPC.EC0.BVHB, Local1)
When I check BCLB, BCHB, BVLB and BVHB in Device (EC0), they already have 8 as the value:
BCLB, 8,
BCHB, 8,
Offset (0x74),
BVLB, 8,
BVHB, 8,
Offset (0x7E),
This is the UPBS method:
Method (UPBS, 0, NotSerialized)
{
Store (^^PCI0.LPC.EC0.MBST, Index (PBST, Zero))
^^PCI0.LPC.EC0.SMRD (0x09, 0x16, 0x0A, RefOf (Local0))
Store (Local0, Index (PBST, One))
^^PCI0.LPC.EC0.SMRD (0x09, 0x16, 0x0F, RefOf (Local1))
Store (Local1, Index (PBST, 0x02))
^^PCI0.LPC.EC0.SMRD (0x09, 0x16, 0x09, RefOf (Local2))
Store (Local2, Index (PBST, 0x03))
}Am I doing something wrong? May be my problem is related to something else?
Thanks,