NB None of what follows has any effect unless you have kernel 2.6.18.6-tex1 or later. So 0.93a is a no-no, and 2007TR1/TR2 need a kernel upgrade before you go any further. Also if your lappy uses APM rather than ACPI this has no effect.
ADDING A DSDT FILEIn many cases, the firmware on your laptop was tested for windows, but not Linux, and that's why these things don't always work properly. There is a solution, however. Until recently it required a kernel patch, and the patch was different for every laptop. This is, of course, out of the scope of a distro like PCLinuxOS. Now there is a way to avoid that. ocilent1 has added a change to the kernel which enables the "patch" to be applied through the "initial ramdisk" initrd.img. This is something that you can do yourself.
The thing causing the problem is called a Differentiated System Description Table, or DSDT. You can now get an alternate DSDT on the net, and use it on your laptop.
You need to compile it using an intel compiler called "iasl". Go to synaptic and install a program called iasl.
Then you need to find a ".asl" file for your lappy here:
http://acpi.sourceforge.net/dsdt/view.phpYou will find different ones for your laptop. Sorry, each laptop may have been issued with slight internal modifications. You may have to try more than one before one works. You may find none work. Sorry if you waste your time. It may help if you go into your BIOS setup screen on bootup and make a note of the firmware revision numbers etc. Download the file to your desktop. It's actually compressed, so if you click on it, you will open "Ark". Drag the asl file out of the archive onto your desktop and select Copy Here. You need to open a terminal, and enter the following commands, (ENTER after each line):
cd Desktop
iasl file-name.asl
Where the file-name.asl is the actual file name of your asl file. Before going further, ensure that iasl reported no errors.
You end up with a new file called DSDT.aml which is for your particular laptop. Now continue:
su
(root password)
cp DSDT.aml /boot
cd /boot
Next line only needed second and subsequent time around:rm initrd2.img
mkinitrd --dsdt=DSDT.aml initrd2.img `uname -r`
Note that last line the quotes are "grave accents" aka "reverse ticks". That is crucial. You now have a second initrd.img called initrd2.img. You can now add this to GRUB. Don't worry we will keep the original image available for emergency.
Still in your terminal, type in:
kwrite /boot/grub/menu.lst
(that's a small L not a number 1)
Use copy and paste to duplicate the first 3-line section that starts with "title". Change the title of the second entry to read "Linux-DSDT", the BOOT_IMAGE entry also to Linux-DSDT, and the initrd line to end initrd2.img instead of initrd.img. Also, in this second section only, delete any "acpi=off or acpi=ht" entries, as the whole point here is to get acpi on! Save. Now you have an extra entry in your GRUB menu which is for your amended initial read image.
OK you can now reboot, and test the new image. If the computer boots, there is a fair chance that everything that didn't work, will. If it gets stuck, just reboot using the original entry, and try again with another asl file. Same if it boots but still not working properly and you want to try another DSDT file. The only difference is that you need to delete the initrd2.img file before mkinitrd will create another.
If it does work, you will have to repeat from the "su" line whenever you load a new kernel, except that you can omit the line starting "cp". Although at every kernel update I would first test to see whether everything works without all DSDT stuff, you never know.
I learnt all this but didn't need it for myself, as changes in the Suspend system worked on my lappy. I would like to know of any success stories, however.