Comment 34 for bug 270123

Revision history for this message
Raynald (lahondes) wrote :

Many thanks to Patrick. This solved the problem for me.

In short combine this to create a new DSDT (ref: https://wiki.kubuntu.org/LaptopTestingTeam/Old/FujitsuEsprimoU9200)

<code>
sudo apt-get install iasl
cd
mkdir DSDT
cd DSDT
sudo cat /proc/acpi/dsdt > dsdt.dat
iasl -d dsdt.dat
gedit dsdt.aml
</code>

Ok, now you should have your dsdt file open. So let's fix it, look for the following code in Device (BAT0), under the Method (UPBS, 0, NotSerialized) subsection:

<code>
     If (LEqual (Local0, 0x02))
     {
         And (Local7, One, Local0)
         If (LEqual (Local0, One))
         {
             And (Local7, 0x80, Local1)
             If (LEqual (Local1, 0x80))
             {
                 Or (Local4, 0x02, Local4)
             }
             Else
             {
                 Or (Local4, One, Local4)
             }
         }
      }
</code>

Ok, now let's fix it. Else code is misplaced, it has to be moved out of the If (LEqual (Local0, One)). So, it should be:

<code>
     If (LEqual (Local0, 0x02))
     {
         And (Local7, One, Local0)
         If (LEqual (Local0, One))
         {
             And (Local7, 0x80, Local1)
             If (LEqual (Local1, 0x80))
             {
                 Or (Local4, 0x02, Local4)
             }
             //ELSE WAS HERE
         }
         // ELSE CORRECT PLACE
         Else
         {
             Or (Local4, One, Local4)
         }
      }
</code>

Now, simply save and close gedit, and let's continue:

<code>
cd
cd DSDT
iasl -tc dsdt.dsl
</code>

OK now let's insert this in the kernel :

<code>
mkdir /dsdt
cp dsdt.hex /dest/dsdt_table.h
</code>

 - stop following what's written in FujitsuEsprimoU9200, the rest won't work. -

And follow what's here :

http://newyork.ubuntuforums.org/showthread.php?p=8707937