2021-06-03 00:11:38

by Maximilian Luz

[permalink] [raw]
Subject: [PATCH] platform/surface: aggregator: Fix event disable function

Disabling events silently fails due to the wrong command ID being used.
Instead of the command ID for the disable call, the command ID for the
enable call was being used. This causes the disable call to enable the
event instead. As the event is already enabled when we call this
function, the EC silently drops this command and does nothing.

Use the correct command ID for disabling the event to fix this.

Fixes: c167b9c7e3d6 ("platform/surface: Add Surface Aggregator subsystem")
Signed-off-by: Maximilian Luz <[email protected]>
---
drivers/platform/surface/aggregator/controller.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/platform/surface/aggregator/controller.c b/drivers/platform/surface/aggregator/controller.c
index 8a70df60142c..a06964aa96e7 100644
--- a/drivers/platform/surface/aggregator/controller.c
+++ b/drivers/platform/surface/aggregator/controller.c
@@ -1907,7 +1907,7 @@ static int ssam_ssh_event_disable(struct ssam_controller *ctrl,
{
int status;

- status = __ssam_ssh_event_request(ctrl, reg, reg.cid_enable, id, flags);
+ status = __ssam_ssh_event_request(ctrl, reg, reg.cid_disable, id, flags);

if (status < 0 && status != -EINVAL) {
ssam_err(ctrl,
--
2.31.1


2021-06-03 11:11:26

by Hans de Goede

[permalink] [raw]
Subject: Re: [PATCH] platform/surface: aggregator: Fix event disable function

Hi,

On 6/3/21 2:06 AM, Maximilian Luz wrote:
> Disabling events silently fails due to the wrong command ID being used.
> Instead of the command ID for the disable call, the command ID for the
> enable call was being used. This causes the disable call to enable the
> event instead. As the event is already enabled when we call this
> function, the EC silently drops this command and does nothing.
>
> Use the correct command ID for disabling the event to fix this.
>
> Fixes: c167b9c7e3d6 ("platform/surface: Add Surface Aggregator subsystem")
> Signed-off-by: Maximilian Luz <[email protected]>

Thank you for your patch, I've applied this patch to my review-hans
branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans

I'll also add this to the fixes branch, so that it gets included
in my next pull-req to Linus for 5.13.

Note it will show up in my review-hans branch once I've pushed my
local branch there, which might take a while.

Once I've run some tests on this branch the patches there will be
added to the platform-drivers-x86/for-next branch and eventually
will be included in the pdx86 pull-request to Linus for the next
merge-window.

Regards,

Hans

> ---
> drivers/platform/surface/aggregator/controller.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/platform/surface/aggregator/controller.c b/drivers/platform/surface/aggregator/controller.c
> index 8a70df60142c..a06964aa96e7 100644
> --- a/drivers/platform/surface/aggregator/controller.c
> +++ b/drivers/platform/surface/aggregator/controller.c
> @@ -1907,7 +1907,7 @@ static int ssam_ssh_event_disable(struct ssam_controller *ctrl,
> {
> int status;
>
> - status = __ssam_ssh_event_request(ctrl, reg, reg.cid_enable, id, flags);
> + status = __ssam_ssh_event_request(ctrl, reg, reg.cid_disable, id, flags);
>
> if (status < 0 && status != -EINVAL) {
> ssam_err(ctrl,
>