patch "iio: cros_ec: Use default frequencies when EC returns invalid" added to staging-linus
Subsystems (3)
This is a note to let you know that I've just added the patch titled
iio: cros_ec: Use default frequencies when EC returns invalid
to my staging git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
in the staging-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From 56e4f2dda23c6d39d327944faa89efaa4eb290d1 Mon Sep 17 00:00:00 2001
From: Gwendal Grignou <[email protected]>
Date: Tue, 30 Jun 2020 08:37:30 -0700
Subject: iio: cros_ec: Use default frequencies when EC returns invalid
information
Minimal and maximal frequencies supported by a sensor is queried. On some older machines, these frequencies are not returned properly and the EC returns 0 instead.
When returned maximal frequency is 0, ignore the information and use default frequencies instead.
--- .../cros_ec_sensors/cros_ec_sensors_core.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c +11 -5
@@ -256,7 +256,7 @@ int cros_ec_sensors_core_init(struct platform_device *pdev,struct cros_ec_sensorhub *sensor_hub =dev_get_drvdata (dev->parent);struct cros_ec_dev *ec = sensor_hub->ec;struct cros_ec_sensor_platform *sensor_platform =dev_get_platdata (dev); -u32 ver_mask; +u32 ver_mask, temp;int frequencies[ARRAY_SIZE (state->frequencies) /2 ] = {0 };int ret, i;
@@ -311,10 +311,16 @@ int cros_ec_sensors_core_init(struct platform_device *pdev, &frequencies[2 ], &state->fifo_max_event_count); }else { - frequencies[1 ] = state->resp->info_3.min_frequency; - frequencies[2 ] = state->resp->info_3.max_frequency; - state->fifo_max_event_count = - state->resp->info_3.fifo_max_event_count; +if (state->resp->info_3.max_frequency ==0 ) { +get_default_min_max_freq (state->resp->info.type, + &frequencies[1 ], + &frequencies[2 ], + &temp); + }else { + frequencies[1 ] = state->resp->info_3.min_frequency; + frequencies[2 ] = state->resp->info_3.max_frequency; + } + state->fifo_max_event_count = state->resp->info_3.fifo_max_event_count; }for (i =0 ; i <ARRAY_SIZE (frequencies); i++) { state->frequencies[2 * i] = frequencies[i] /1000 ;
Signature · 1 line
2.29.2