Re: [PATCH] samsung-laptop: enable better lid handling

From: Darren Hart
Date: Mon Jan 26 2015 - 21:53:05 EST


On Thu, Dec 11, 2014 at 09:18:35PM +0000, Julijonas Kikutis wrote:

Hi Julijonas,

Please Cc the maintainer listed in the MAINTERS file for a faster response.

> Some Samsung laptops with SABI3 delay the sleep for 10 seconds after
> the lid is closed and do not wake up from sleep after the lid is opened.
> A SABI command is needed to enable the better behavior.
>
> Command = 0x6e, d0 = 0x81 enables this behavior. Returns d0 = 0x01.
> Command = 0x6e, d0 = 0x80 disables this behavior. Returns d0 = 0x00.
>
> Command = 0x6d and any d0 queries the state. This returns:
> d0 = 0x00000*01, d1 = 0x00, d2 = 0x00, d3 = 0x0* when it is enabled.
> d0 = 0x00000*00, d1 = 0x00, d2 = 0x00, d3 = 0x0* when it is disabled.
> Where * is 0 - laptop has never slept or hibernated after switch on,
> 1 - laptop has hibernated just before,
> 2 - laptop has slept just before.
>
> Patch addresses bug https://bugzilla.kernel.org/show_bug.cgi?id=75901.
> It adds a sysfs attribute lid_handling with description and also an
> addition to the quirks structure to enable the mode by default.
>
> However, a user with another laptop in the bug report says that "power
> button has to be pressed twice to wake the machine" in this mode.

This is with this patch applied?

> Therefore, it is enabled by default only for the single laptop that I
> have tested.
>
> This mode is also needed in UEFI, but there samsung-laptop is
> unfortunately disabled.

I don't follow. What are you saying here?

This looks pretty much ready. The only comments I have are argued against by
staying consistent with the existing driver. So just the above questions and one
comment below. Please clarify, update, and resend. Be sure to add me to Cc this
time :-)

>
> Signed-off-by: Julijonas Kikutis <julijonas.kikutis@xxxxxxxxx>
> ---

...

> @@ -1111,7 +1208,7 @@ static int __init samsung_backlight_init(struct samsung_laptop *samsung)
> }
>
> static umode_t samsung_sysfs_is_visible(struct kobject *kobj,
> - struct attribute *attr, int idx)
> + struct attribute *attr, int idx)
> {
> struct device *dev = container_of(kobj, struct device, kobj);
> struct platform_device *pdev = to_platform_device(dev);
> @@ -1124,6 +1221,8 @@ static umode_t samsung_sysfs_is_visible(struct kobject *kobj,
> ok = !!(read_battery_life_extender(samsung) >= 0);
> if (attr == &dev_attr_usb_charge.attr)
> ok = !!(read_usb_charge(samsung) >= 0);
> + if (attr == &dev_attr_lid_handling.attr)
> + ok = !!(read_lid_handling(samsung) >= 0);
>
> return ok ? attr->mode : 0;
> }
> @@ -1436,6 +1535,10 @@ static int samsung_pm_notification(struct notifier_block *nb,
> samsung->quirks->enable_kbd_backlight)
> kbd_backlight_enable(samsung);
>
> + if (val == PM_POST_HIBERNATION &&
> + samsung->quirks->lid_handling)

This can be one line.


--
Darren Hart
Intel Open Source Technology Center
--
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/