Skip to content

Commit 52075d2

Browse files
diogoivoTzung-Bi Shih
authored andcommitted
platform/chrome: sensorhub: Support devices without FIFO_INT_ENABLE
Some devices (such as Smaug) report having MOTION_SENSE_FIFO but do not support controlling the behaviour of the FIFO interrupt via the FIFO_INT_ENABLE command and in these cases the interrupt is always enabled. However, currently the code assumes that if MOTION_SENSE_FIFO is supported then so is FIFO_INT_ENABLE, and when it tries to enable the interrupt via this command and an unsupported device reports a failure it then propagates this into failing the sensors probe. Interpret the return value -EINVAL as a device where FIFO_INT_ENABLE is not present and the interrupt is always enabled. Signed-off-by: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt> Link: https://lore.kernel.org/r/20251112-diogo-smaug_ec_sensorhub-v1-1-f71d4e9eb9d4@tecnico.ulisboa.pt Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
1 parent 944edca commit 52075d2

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

drivers/platform/chrome/cros_ec_sensorhub_ring.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,17 @@ int cros_ec_sensorhub_ring_fifo_enable(struct cros_ec_sensorhub *sensorhub,
129129
/* We expect to receive a payload of 4 bytes, ignore. */
130130
if (ret > 0)
131131
ret = 0;
132+
/*
133+
* Some platforms (such as Smaug) don't support the FIFO_INT_ENABLE
134+
* command and the interrupt is always enabled. In the case, it
135+
* returns -EINVAL.
136+
*
137+
* N.B: there is no danger of -EINVAL meaning any other invalid
138+
* parameter since fifo_int_enable.enable is a bool and can never
139+
* be in an invalid range.
140+
*/
141+
else if (ret == -EINVAL)
142+
ret = 0;
132143

133144
return ret;
134145
}

0 commit comments

Comments
 (0)