* [PATCH v2] iio: cros_ec: Use default frequencies when EC returns invalid information
@ 2020-06-30 15:37 Gwendal Grignou
2020-06-30 15:50 ` Enric Balletbo i Serra
0 siblings, 1 reply; 6+ messages in thread
From: Gwendal Grignou @ 2020-06-30 15:37 UTC (permalink / raw)
To: jic23, bleung, enric.balletbo; +Cc: lars, linux-iio, Gwendal Grignou
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.
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
---
Changes since v1:
- improve visibility by using new 100 character line length limit.
.../cros_ec_sensors/cros_ec_sensors_core.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
index 36e3f20891f05..b30fd6b56773f 100644
--- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
+++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
@@ -289,7 +289,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;
@@ -345,10 +345,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;
--
2.27.0.212.ge8ba1cc988-goog
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2] iio: cros_ec: Use default frequencies when EC returns invalid information
2020-06-30 15:37 [PATCH v2] iio: cros_ec: Use default frequencies when EC returns invalid information Gwendal Grignou
@ 2020-06-30 15:50 ` Enric Balletbo i Serra
2020-07-04 16:44 ` Jonathan Cameron
0 siblings, 1 reply; 6+ messages in thread
From: Enric Balletbo i Serra @ 2020-06-30 15:50 UTC (permalink / raw)
To: Gwendal Grignou, jic23, bleung; +Cc: lars, linux-iio
Hi Gwendal,
On 30/6/20 17:37, Gwendal Grignou wrote:
> 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.
>
> Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> ---
> Changes since v1:
> - improve visibility by using new 100 character line length limit.
>
> .../cros_ec_sensors/cros_ec_sensors_core.c | 16 +++++++++++-----
> 1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> index 36e3f20891f05..b30fd6b56773f 100644
> --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> @@ -289,7 +289,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;
>
> @@ -345,10 +345,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;
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] iio: cros_ec: Use default frequencies when EC returns invalid information
2020-06-30 15:50 ` Enric Balletbo i Serra
@ 2020-07-04 16:44 ` Jonathan Cameron
2020-09-26 15:21 ` Jonathan Cameron
0 siblings, 1 reply; 6+ messages in thread
From: Jonathan Cameron @ 2020-07-04 16:44 UTC (permalink / raw)
To: Enric Balletbo i Serra; +Cc: Gwendal Grignou, bleung, lars, linux-iio
On Tue, 30 Jun 2020 17:50:24 +0200
Enric Balletbo i Serra <enric.balletbo@collabora.com> wrote:
> Hi Gwendal,
>
> On 30/6/20 17:37, Gwendal Grignou wrote:
> > 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.
> >
> > Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
>
> Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Fix or tidy up? I.e. does this want to go into stable?
Thanks,
Jonathan
>
> > ---
> > Changes since v1:
> > - improve visibility by using new 100 character line length limit.
> >
> > .../cros_ec_sensors/cros_ec_sensors_core.c | 16 +++++++++++-----
> > 1 file changed, 11 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> > index 36e3f20891f05..b30fd6b56773f 100644
> > --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> > +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> > @@ -289,7 +289,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;
> >
> > @@ -345,10 +345,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;
> >
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] iio: cros_ec: Use default frequencies when EC returns invalid information
2020-07-04 16:44 ` Jonathan Cameron
@ 2020-09-26 15:21 ` Jonathan Cameron
2020-10-01 16:52 ` Enric Balletbo i Serra
0 siblings, 1 reply; 6+ messages in thread
From: Jonathan Cameron @ 2020-09-26 15:21 UTC (permalink / raw)
To: Enric Balletbo i Serra; +Cc: Gwendal Grignou, bleung, lars, linux-iio
On Sat, 4 Jul 2020 17:44:37 +0100
Jonathan Cameron <jic23@kernel.org> wrote:
> On Tue, 30 Jun 2020 17:50:24 +0200
> Enric Balletbo i Serra <enric.balletbo@collabora.com> wrote:
>
> > Hi Gwendal,
> >
> > On 30/6/20 17:37, Gwendal Grignou wrote:
> > > 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.
> > >
> > > Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
> >
> > Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
>
> Fix or tidy up? I.e. does this want to go into stable?
I've still not applied this one due to the above question.
If I don't hear reasonably soon I'll guess tidy up and queue
it up.
Thanks,
Jonathan
>
> Thanks,
>
> Jonathan
>
> >
> > > ---
> > > Changes since v1:
> > > - improve visibility by using new 100 character line length limit.
> > >
> > > .../cros_ec_sensors/cros_ec_sensors_core.c | 16 +++++++++++-----
> > > 1 file changed, 11 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> > > index 36e3f20891f05..b30fd6b56773f 100644
> > > --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> > > +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> > > @@ -289,7 +289,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;
> > >
> > > @@ -345,10 +345,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;
> > >
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] iio: cros_ec: Use default frequencies when EC returns invalid information
2020-09-26 15:21 ` Jonathan Cameron
@ 2020-10-01 16:52 ` Enric Balletbo i Serra
2020-10-10 13:19 ` Jonathan Cameron
0 siblings, 1 reply; 6+ messages in thread
From: Enric Balletbo i Serra @ 2020-10-01 16:52 UTC (permalink / raw)
To: Jonathan Cameron; +Cc: Gwendal Grignou, bleung, lars, linux-iio
Hi Jonathan,
Sorry for the late reply.
On 26/9/20 17:21, Jonathan Cameron wrote:
> On Sat, 4 Jul 2020 17:44:37 +0100
> Jonathan Cameron <jic23@kernel.org> wrote:
>
>> On Tue, 30 Jun 2020 17:50:24 +0200
>> Enric Balletbo i Serra <enric.balletbo@collabora.com> wrote:
>>
>>> Hi Gwendal,
>>>
>>> On 30/6/20 17:37, Gwendal Grignou wrote:
>>>> 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.
>>>>
>>>> Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
>>>
>>> Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
>>
>> Fix or tidy up? I.e. does this want to go into stable?
>
> I've still not applied this one due to the above question.
>
> If I don't hear reasonably soon I'll guess tidy up and queue
> it up.
>
I think that should be a fix, although it might require some backport effort to
apply the patch cleanly on older stable versions as there were some changes
between the problem was introduced and the fix.
Fixes: ae7b02ad2f32 ("iio: common: cros_ec_sensors: Expose cros_ec_sensors
frequency range via iio sysfs")
Thanks,
Enric
> Thanks,
>
> Jonathan
>
>>
>> Thanks,
>>
>> Jonathan
>>
>>>
>>>> ---
>>>> Changes since v1:
>>>> - improve visibility by using new 100 character line length limit.
>>>>
>>>> .../cros_ec_sensors/cros_ec_sensors_core.c | 16 +++++++++++-----
>>>> 1 file changed, 11 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
>>>> index 36e3f20891f05..b30fd6b56773f 100644
>>>> --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
>>>> +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
>>>> @@ -289,7 +289,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;
>>>>
>>>> @@ -345,10 +345,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;
>>>>
>>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] iio: cros_ec: Use default frequencies when EC returns invalid information
2020-10-01 16:52 ` Enric Balletbo i Serra
@ 2020-10-10 13:19 ` Jonathan Cameron
0 siblings, 0 replies; 6+ messages in thread
From: Jonathan Cameron @ 2020-10-10 13:19 UTC (permalink / raw)
To: Enric Balletbo i Serra; +Cc: Gwendal Grignou, bleung, lars, linux-iio
On Thu, 1 Oct 2020 18:52:16 +0200
Enric Balletbo i Serra <enric.balletbo@collabora.com> wrote:
> Hi Jonathan,
>
> Sorry for the late reply.
>
> On 26/9/20 17:21, Jonathan Cameron wrote:
> > On Sat, 4 Jul 2020 17:44:37 +0100
> > Jonathan Cameron <jic23@kernel.org> wrote:
> >
> >> On Tue, 30 Jun 2020 17:50:24 +0200
> >> Enric Balletbo i Serra <enric.balletbo@collabora.com> wrote:
> >>
> >>> Hi Gwendal,
> >>>
> >>> On 30/6/20 17:37, Gwendal Grignou wrote:
> >>>> 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.
> >>>>
> >>>> Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
> >>>
> >>> Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> >>
> >> Fix or tidy up? I.e. does this want to go into stable?
> >
> > I've still not applied this one due to the above question.
> >
> > If I don't hear reasonably soon I'll guess tidy up and queue
> > it up.
> >
>
> I think that should be a fix, although it might require some backport effort to
> apply the patch cleanly on older stable versions as there were some changes
> between the problem was introduced and the fix.
>
> Fixes: ae7b02ad2f32 ("iio: common: cros_ec_sensors: Expose cros_ec_sensors
> frequency range via iio sysfs")
Applied to the fixes-togreg branch of iio.git and marked for stable.
This won't go upstream until after the merge window though given timing.
Thanks,
Jonathan
>
> Thanks,
> Enric
>
> > Thanks,
> >
> > Jonathan
> >
> >>
> >> Thanks,
> >>
> >> Jonathan
> >>
> >>>
> >>>> ---
> >>>> Changes since v1:
> >>>> - improve visibility by using new 100 character line length limit.
> >>>>
> >>>> .../cros_ec_sensors/cros_ec_sensors_core.c | 16 +++++++++++-----
> >>>> 1 file changed, 11 insertions(+), 5 deletions(-)
> >>>>
> >>>> diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> >>>> index 36e3f20891f05..b30fd6b56773f 100644
> >>>> --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> >>>> +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> >>>> @@ -289,7 +289,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;
> >>>>
> >>>> @@ -345,10 +345,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;
> >>>>
> >>
> >
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-10-10 23:08 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-30 15:37 [PATCH v2] iio: cros_ec: Use default frequencies when EC returns invalid information Gwendal Grignou
2020-06-30 15:50 ` Enric Balletbo i Serra
2020-07-04 16:44 ` Jonathan Cameron
2020-09-26 15:21 ` Jonathan Cameron
2020-10-01 16:52 ` Enric Balletbo i Serra
2020-10-10 13:19 ` Jonathan Cameron
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).