Commit 2fc6d0ec authored by Sebastian Reichel's avatar Sebastian Reichel

Merge branch 'psy-fixes' into psy-next

parents eab4e6d9 601423bc
...@@ -345,6 +345,16 @@ static u32 spwr_notify_bat(struct ssam_event_notifier *nf, const struct ssam_eve ...@@ -345,6 +345,16 @@ static u32 spwr_notify_bat(struct ssam_event_notifier *nf, const struct ssam_eve
struct spwr_battery_device *bat = container_of(nf, struct spwr_battery_device, notif); struct spwr_battery_device *bat = container_of(nf, struct spwr_battery_device, notif);
int status; int status;
/*
* We cannot use strict matching when registering the notifier as the
* EC expects us to register it against instance ID 0. Strict matching
* would thus drop events, as those may have non-zero instance IDs in
* this subsystem. So we need to check the instance ID of the event
* here manually.
*/
if (event->instance_id != bat->sdev->uid.instance)
return 0;
dev_dbg(&bat->sdev->dev, "power event (cid = %#04x, iid = %#04x, tid = %#04x)\n", dev_dbg(&bat->sdev->dev, "power event (cid = %#04x, iid = %#04x, tid = %#04x)\n",
event->command_id, event->instance_id, event->target_id); event->command_id, event->instance_id, event->target_id);
...@@ -720,8 +730,8 @@ static void spwr_battery_init(struct spwr_battery_device *bat, struct ssam_devic ...@@ -720,8 +730,8 @@ static void spwr_battery_init(struct spwr_battery_device *bat, struct ssam_devic
bat->notif.base.fn = spwr_notify_bat; bat->notif.base.fn = spwr_notify_bat;
bat->notif.event.reg = registry; bat->notif.event.reg = registry;
bat->notif.event.id.target_category = sdev->uid.category; bat->notif.event.id.target_category = sdev->uid.category;
bat->notif.event.id.instance = 0; bat->notif.event.id.instance = 0; /* need to register with instance 0 */
bat->notif.event.mask = SSAM_EVENT_MASK_STRICT; bat->notif.event.mask = SSAM_EVENT_MASK_TARGET;
bat->notif.event.flags = SSAM_EVENT_SEQUENCED; bat->notif.event.flags = SSAM_EVENT_SEQUENCED;
bat->psy_desc.name = bat->name; bat->psy_desc.name = bat->name;
......
...@@ -66,7 +66,7 @@ struct spwr_ac_device { ...@@ -66,7 +66,7 @@ struct spwr_ac_device {
static int spwr_ac_update_unlocked(struct spwr_ac_device *ac) static int spwr_ac_update_unlocked(struct spwr_ac_device *ac)
{ {
u32 old = ac->state; __le32 old = ac->state;
int status; int status;
lockdep_assert_held(&ac->lock); lockdep_assert_held(&ac->lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment