Re: Samsung N145 Plus lid state issue on sleep

From: Nick Warne
Date: Thu Oct 03 2013 - 13:07:55 EST


On Sat, Sep 28, 2013 at 10:14:26PM +0100, Nick Warne wrote:
> On Thu, Sep 26, 2013 at 06:25:00PM +0100, Nick Warne wrote:
> > Hi all,
> >
> > I have a strange problem, which has been on going on for ages, and I finally decided to look at it (as it is a pain in the arse).
> >
> > Brief details:
> >
> > Samsung N145 Plus running Slack 14 with handbuilt kernel
> > Kernel: Linux 3.11.1 #3 SMP Mon Sep 23 19:09:00 BST 2013 i686 Intel(R) Atom(TM) CPU N455 @ 1.66GHz GenuineIntel GNU/Linux
> > I have no modules built in (.config on request if it helps).
> >
> > This issue also happened with 'distro' kernel builds... so either it is BIOS issue or hardware fault. But just in case:
> >
> > Boot laptop into console - no X - so running pure acpi events.
> >
> > cat /proc/acpi/button/lid/LID0/state
> > state: open
> >
> > shut lid
> >
> > laptop goes to sleep all great.
> >
> > open lid. Laptop wakes up, video, wlan0 all comes on line, everything hunky dory - but:
> >
> > cat /proc/acpi/button/lid/LID0/state
> > state: closed
> >
> > The lid is open, of course!
> >
> > OK, shut lid. LCD backlight goes off (so something knows the lid is shut), but no sleep event. Open lid after a few seconds (maybe 10), and screen lights up and then laptop goes to sleep!
> >
> > Shut lid (wait for a few seconds), open lid, laptop wakes up fine again, and now:
> >
> > cat /proc/acpi/button/lid/LID0/state
> > state: open
> >
> > !
> >
> > So it appears that closing lid flags 'closed' state but opening it doesn't flag 'open' state... unless I then close it again and open which then flags 'closed' state when open so goes to sleep. So no open it again, and 'state now reports 'open' again. At this point, back to square one (confused? I am!).
> >
> > Using Fn [sleep] in any mode above works OK. The same happens in X using xfce4 PM or similar.
> >
> > What is confusing me is that something can see the lid flapping as backlight works on lid open/close.
> >
> > acpi_listen reports the events as described above, but I can't work out how to record the events when a sleep :)
> >
> > And ideas/help etc. appreciated, and also I am in the position to be able to debug (with help, of course)!
>
> OK, doing a lot of research, it appears the dsdt is well fubarred.
>
> I have now managed to get a clean build of the extracted dsdt, and testing with various (LIDS) stuff in the code it seems that something is drastically wrong.
>
> Anyhow, I have now got a decent working dsdt that at least sleeps everytime on lid close - although it then goes to sleep again after lid is open, but I can handle that (reverse of my original problem, almost, but at least lid close makes it sleep 100%).
>
> Sleep button (Fn Esc) works as it should.
>
> Anybody good at asl coding? There is some thing obvioulsy wrong with the logic in this code.

OK, I have hung myself.

Even finding this bug report, and shipping off a quick mail, deadly, spookily all quiet on the DSDT front.

https://bugzilla.kernel.org/show_bug.cgi?id=17081

So for googlers everywhere, I have at least got a dirty hack:

http://www.linicks.net/dsdt/

It's not right, nor even wrong, but at least it works (sorta).

Nick
--
FSF Associate Member 5508
http://linicks.net/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/