2023-02-22 14:18:08

by Werner Sembach

[permalink] [raw]
Subject: [PATCH 0/2] Add quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1

On these Barebones PSR 2 is recognized as supported but is very buggy:
- Upper third of screen does sometimes not updated, resulting in
disappearing cursors or ghosts of already closed Windows saying behind.
- Approximately 40 px from the bottom edge a 3 pixel wide strip of randomly
colored pixels is flickering.

PSR 1 is working fine however.

This patchset introduces a new quirk to disable PSR 2 specifically on known
buggy devices and applies it to the Tongfang PHxTxX1 and PHxTQx1 barebones.

Signed-off-by: Werner Sembach <[email protected]>
Cc: <[email protected]>




2023-02-22 14:18:12

by Werner Sembach

[permalink] [raw]
Subject: [PATCH 2/2] Apply quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1

On these Barebones PSR 2 is recognized as supported but is very buggy:
- Upper third of screen does sometimes not updated, resulting in
disappearing cursors or ghosts of already closed Windows saying behind.
- Approximately 40 px from the bottom edge a 3 pixel wide strip of randomly
colored pixels is flickering.

PSR 1 is working fine however.

Signed-off-by: Werner Sembach <[email protected]>
Cc: <[email protected]>
---
drivers/gpu/drm/i915/display/intel_quirks.c | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c
index ce6d0fe6448f5..eeb32d3189f5c 100644
--- a/drivers/gpu/drm/i915/display/intel_quirks.c
+++ b/drivers/gpu/drm/i915/display/intel_quirks.c
@@ -65,6 +65,10 @@ static void quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
drm_info(&i915->drm, "Applying no pps backlight power quirk\n");
}

+/*
+ * Tongfang PHxTxX1 and PHxTQx1 devices have support for PSR 2 but it is broken
+ * on Linux. PSR 1 however works just fine.
+ */
static void quirk_no_psr2(struct drm_i915_private *i915)
{
intel_set_quirk(i915, QUIRK_NO_PSR2);
@@ -205,6 +209,10 @@ static struct intel_quirk intel_quirks[] = {
/* ECS Liva Q2 */
{ 0x3185, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time },
{ 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time },
+
+ /* Tongfang PHxTxX1 and PHxTQx1/TUXEDO InfinityBook 14 Gen6 */
+ { 0x9a49, 0x1d05, 0x1105, quirk_no_psr2 },
+ { 0x9a49, 0x1d05, 0x114c, quirk_no_psr2 },
};

void intel_init_quirks(struct drm_i915_private *i915)
--
2.34.1


2023-02-22 14:18:15

by Werner Sembach

[permalink] [raw]
Subject: [PATCH 1/2] Add quirk to disable PSR 2 on a per device basis

This adds the possibility to disable PSR 2 explicitly using the intel
quirk table for devices where PSR 2 is borked, but PSR 1 works fine.

Signed-off-by: Werner Sembach <[email protected]>
Cc: <[email protected]>
---
drivers/gpu/drm/i915/display/intel_psr.c | 4 +++-
drivers/gpu/drm/i915/display/intel_quirks.c | 6 ++++++
drivers/gpu/drm/i915/display/intel_quirks.h | 1 +
3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 5b678916e6db5..4607f3c4cf592 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -37,6 +37,7 @@
#include "intel_psr.h"
#include "intel_snps_phy.h"
#include "skl_universal_plane.h"
+#include "intel_quirks.h"

/**
* DOC: Panel Self Refresh (PSR/SRD)
@@ -851,7 +852,8 @@ static bool intel_psr2_config_valid(struct intel_dp *intel_dp,
int crtc_vdisplay = crtc_state->hw.adjusted_mode.crtc_vdisplay;
int psr_max_h = 0, psr_max_v = 0, max_bpp = 0;

- if (!intel_dp->psr.sink_psr2_support)
+ if (!intel_dp->psr.sink_psr2_support ||
+ intel_has_quirk(dev_priv, QUIRK_NO_PSR2))
return false;

/* JSL and EHL only supports eDP 1.3 */
diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c
index 6e48d3bcdfec5..ce6d0fe6448f5 100644
--- a/drivers/gpu/drm/i915/display/intel_quirks.c
+++ b/drivers/gpu/drm/i915/display/intel_quirks.c
@@ -65,6 +65,12 @@ static void quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
drm_info(&i915->drm, "Applying no pps backlight power quirk\n");
}

+static void quirk_no_psr2(struct drm_i915_private *i915)
+{
+ intel_set_quirk(i915, QUIRK_NO_PSR2);
+ drm_info(&i915->drm, "Applying No PSR 2 quirk\n");
+}
+
struct intel_quirk {
int device;
int subsystem_vendor;
diff --git a/drivers/gpu/drm/i915/display/intel_quirks.h b/drivers/gpu/drm/i915/display/intel_quirks.h
index 10a4d163149fd..2e0b788a44a1e 100644
--- a/drivers/gpu/drm/i915/display/intel_quirks.h
+++ b/drivers/gpu/drm/i915/display/intel_quirks.h
@@ -17,6 +17,7 @@ enum intel_quirk_id {
QUIRK_INVERT_BRIGHTNESS,
QUIRK_LVDS_SSC_DISABLE,
QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK,
+ QUIRK_NO_PSR2,
};

void intel_init_quirks(struct drm_i915_private *i915);
--
2.34.1


2023-02-22 15:39:56

by Werner Sembach

[permalink] [raw]
Subject: Re: [PATCH 0/2] Add quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1


Am 22.02.23 um 15:17 schrieb Werner Sembach:
> On these Barebones PSR 2 is recognized as supported but is very buggy:
> - Upper third of screen does sometimes not updated, resulting in
> disappearing cursors or ghosts of already closed Windows saying behind.
> - Approximately 40 px from the bottom edge a 3 pixel wide strip of randomly
> colored pixels is flickering.
>
> PSR 1 is working fine however.
>
> This patchset introduces a new quirk to disable PSR 2 specifically on known
> buggy devices and applies it to the Tongfang PHxTxX1 and PHxTQx1 barebones.
>
> Signed-off-by: Werner Sembach <[email protected]>
> Cc: <[email protected]>
>
>
Parralel to this there is a patch fixing the root cause of this issue:
https://gitlab.freedesktop.org/drm/intel/-/issues/7347#note_1785094

So this quirk might only be relevant for stable kernels, depending on when that
other patch gets merged.


2023-02-22 20:13:53

by Rodrigo Vivi

[permalink] [raw]
Subject: Re: [Intel-gfx] [PATCH 2/2] Apply quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1

On Wed, Feb 22, 2023 at 03:17:55PM +0100, Werner Sembach wrote:
> On these Barebones PSR 2 is recognized as supported but is very buggy:
> - Upper third of screen does sometimes not updated, resulting in
> disappearing cursors or ghosts of already closed Windows saying behind.
> - Approximately 40 px from the bottom edge a 3 pixel wide strip of randomly
> colored pixels is flickering.
>
> PSR 1 is working fine however.

I wonder if this is really about the panel's PSR2 or about the userspace
there not marking the dirtyfb? I know I know... it is not userspace fault...

But I wonder if the case you got here highlights the fact that we have
a substantial bug in the i915 itself in regards to PSR2 API.

Jose, Jouni, ideas on how to check what could be happening here?

oh, btw, Werner, do we have an open gilab issue for this?

Thanks,
Rodrigo.

>
> Signed-off-by: Werner Sembach <[email protected]>
> Cc: <[email protected]>
> ---
> drivers/gpu/drm/i915/display/intel_quirks.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c
> index ce6d0fe6448f5..eeb32d3189f5c 100644
> --- a/drivers/gpu/drm/i915/display/intel_quirks.c
> +++ b/drivers/gpu/drm/i915/display/intel_quirks.c
> @@ -65,6 +65,10 @@ static void quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
> drm_info(&i915->drm, "Applying no pps backlight power quirk\n");
> }
>
> +/*
> + * Tongfang PHxTxX1 and PHxTQx1 devices have support for PSR 2 but it is broken
> + * on Linux. PSR 1 however works just fine.
> + */
> static void quirk_no_psr2(struct drm_i915_private *i915)
> {
> intel_set_quirk(i915, QUIRK_NO_PSR2);
> @@ -205,6 +209,10 @@ static struct intel_quirk intel_quirks[] = {
> /* ECS Liva Q2 */
> { 0x3185, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time },
> { 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time },
> +
> + /* Tongfang PHxTxX1 and PHxTQx1/TUXEDO InfinityBook 14 Gen6 */
> + { 0x9a49, 0x1d05, 0x1105, quirk_no_psr2 },
> + { 0x9a49, 0x1d05, 0x114c, quirk_no_psr2 },
> };
>
> void intel_init_quirks(struct drm_i915_private *i915)
> --
> 2.34.1
>

2023-02-23 06:27:31

by Hogander, Jouni

[permalink] [raw]
Subject: Re: [Intel-gfx] [PATCH 2/2] Apply quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1

On Wed, 2023-02-22 at 15:13 -0500, Rodrigo Vivi wrote:
> On Wed, Feb 22, 2023 at 03:17:55PM +0100, Werner Sembach wrote:
> > On these Barebones PSR 2 is recognized as supported but is very
> > buggy:
> > - Upper third of screen does sometimes not updated, resulting in
> > disappearing cursors or ghosts of already closed Windows saying
> > behind.
> > - Approximately 40 px from the bottom edge a 3 pixel wide strip of
> > randomly
> > colored pixels is flickering.
> >
> > PSR 1 is working fine however.
>
> I wonder if this is really about the panel's PSR2 or about the
> userspace
> there not marking the dirtyfb? I know I know... it is not userspace
> fault...
>
> But I wonder if the case you got here highlights the fact that we
> have
> a substantial bug in the i915 itself in regards to PSR2 API.
>
> Jose, Jouni, ideas on how to check what could be happening here?

There is already fix for this (Thanks to Werner Sembach for testing the
patch):

https://patchwork.freedesktop.org/series/114217/

>
> oh, btw, Werner, do we have an  open gilab issue for this?

https://gitlab.freedesktop.org/drm/intel/-/issues/7347

>
> Thanks,
> Rodrigo.
>
> >
> > Signed-off-by: Werner Sembach <[email protected]>
> > Cc: <[email protected]>
> > ---
> >  drivers/gpu/drm/i915/display/intel_quirks.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c
> > b/drivers/gpu/drm/i915/display/intel_quirks.c
> > index ce6d0fe6448f5..eeb32d3189f5c 100644
> > --- a/drivers/gpu/drm/i915/display/intel_quirks.c
> > +++ b/drivers/gpu/drm/i915/display/intel_quirks.c
> > @@ -65,6 +65,10 @@ static void
> > quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
> >         drm_info(&i915->drm, "Applying no pps backlight power
> > quirk\n");
> >  }
> >  
> > +/*
> > + * Tongfang PHxTxX1 and PHxTQx1 devices have support for PSR 2 but
> > it is broken
> > + * on Linux. PSR 1 however works just fine.
> > + */
> >  static void quirk_no_psr2(struct drm_i915_private *i915)
> >  {
> >         intel_set_quirk(i915, QUIRK_NO_PSR2);
> > @@ -205,6 +209,10 @@ static struct intel_quirk intel_quirks[] = {
> >         /* ECS Liva Q2 */
> >         { 0x3185, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time
> > },
> >         { 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time
> > },
> > +
> > +       /* Tongfang PHxTxX1 and PHxTQx1/TUXEDO InfinityBook 14 Gen6
> > */
> > +       { 0x9a49, 0x1d05, 0x1105, quirk_no_psr2 },
> > +       { 0x9a49, 0x1d05, 0x114c, quirk_no_psr2 },
> >  };
> >  
> >  void intel_init_quirks(struct drm_i915_private *i915)
> > --
> > 2.34.1
> >

2023-02-23 12:16:29

by Werner Sembach

[permalink] [raw]
Subject: Re: [Intel-gfx] [PATCH 2/2] Apply quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1


Am 23.02.23 um 07:27 schrieb Hogander, Jouni:
> On Wed, 2023-02-22 at 15:13 -0500, Rodrigo Vivi wrote:
>> On Wed, Feb 22, 2023 at 03:17:55PM +0100, Werner Sembach wrote:
>>> On these Barebones PSR 2 is recognized as supported but is very
>>> buggy:
>>> - Upper third of screen does sometimes not updated, resulting in
>>> disappearing cursors or ghosts of already closed Windows saying
>>> behind.
>>> - Approximately 40 px from the bottom edge a 3 pixel wide strip of
>>> randomly
>>> colored pixels is flickering.
>>>
>>> PSR 1 is working fine however.
>> I wonder if this is really about the panel's PSR2 or about the
>> userspace
>> there not marking the dirtyfb? I know I know... it is not userspace
>> fault...
>>
>> But I wonder if the case you got here highlights the fact that we
>> have
>> a substantial bug in the i915 itself in regards to PSR2 API.
>>
>> Jose, Jouni, ideas on how to check what could be happening here?
> There is already fix for this (Thanks to Werner Sembach for testing the
> patch):
>
> https://patchwork.freedesktop.org/series/114217/

Yes, thanks for creating that patch ^^

I posted this quirk patch just as an possible alternative for stable if that
other patch is considered not suitable for it (lets wait and see).

And to get some feedback if something like this could be a viable workaround if
similar bugs appear in the future.

>
>> oh, btw, Werner, do we have an  open gilab issue for this?
> https://gitlab.freedesktop.org/drm/intel/-/issues/7347
>
>> Thanks,
>> Rodrigo.
>>
>>> Signed-off-by: Werner Sembach <[email protected]>
>>> Cc: <[email protected]>
>>> ---
>>>  drivers/gpu/drm/i915/display/intel_quirks.c | 8 ++++++++
>>>  1 file changed, 8 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c
>>> b/drivers/gpu/drm/i915/display/intel_quirks.c
>>> index ce6d0fe6448f5..eeb32d3189f5c 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_quirks.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_quirks.c
>>> @@ -65,6 +65,10 @@ static void
>>> quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
>>>         drm_info(&i915->drm, "Applying no pps backlight power
>>> quirk\n");
>>>  }
>>>
>>> +/*
>>> + * Tongfang PHxTxX1 and PHxTQx1 devices have support for PSR 2 but
>>> it is broken
>>> + * on Linux. PSR 1 however works just fine.
>>> + */
>>>  static void quirk_no_psr2(struct drm_i915_private *i915)
>>>  {
>>>         intel_set_quirk(i915, QUIRK_NO_PSR2);
>>> @@ -205,6 +209,10 @@ static struct intel_quirk intel_quirks[] = {
>>>         /* ECS Liva Q2 */
>>>         { 0x3185, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time
>>> },
>>>         { 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time
>>> },
>>> +
>>> +       /* Tongfang PHxTxX1 and PHxTQx1/TUXEDO InfinityBook 14 Gen6
>>> */
>>> +       { 0x9a49, 0x1d05, 0x1105, quirk_no_psr2 },
>>> +       { 0x9a49, 0x1d05, 0x114c, quirk_no_psr2 },
>>>  };
>>>
>>>  void intel_init_quirks(struct drm_i915_private *i915)
>>> --
>>> 2.34.1
>>>

2023-02-23 18:26:36

by Hogander, Jouni

[permalink] [raw]
Subject: Re: [PATCH 0/2] Add quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1

On Wed, 2023-02-22 at 15:17 +0100, Werner Sembach wrote:
> On these Barebones PSR 2 is recognized as supported but is very
> buggy:
> - Upper third of screen does sometimes not updated, resulting in
> disappearing cursors or ghosts of already closed Windows saying
> behind.
> - Approximately 40 px from the bottom edge a 3 pixel wide strip of
> randomly
> colored pixels is flickering.
>
> PSR 1 is working fine however.
>
> This patchset introduces a new quirk to disable PSR 2 specifically on
> known
> buggy devices and applies it to the Tongfang PHxTxX1 and PHxTQx1
> barebones.

I've been thinking something similar as there is still at least one
issue which seems to be like panel side issue:

https://gitlab.freedesktop.org/drm/intel/-/issues/7836

Did you considered dpcd_quirk_list in drivers/gpu/drm/drm_dp_helper.c?

I'm not sure which one is more correct though...

>
> Signed-off-by: Werner Sembach <[email protected]>
> Cc: <[email protected]>
>
>

2023-02-23 18:56:22

by Werner Sembach

[permalink] [raw]
Subject: Re: [PATCH 0/2] Add quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1


Am 23.02.23 um 19:26 schrieb Hogander, Jouni:
> On Wed, 2023-02-22 at 15:17 +0100, Werner Sembach wrote:
>> On these Barebones PSR 2 is recognized as supported but is very
>> buggy:
>> - Upper third of screen does sometimes not updated, resulting in
>> disappearing cursors or ghosts of already closed Windows saying
>> behind.
>> - Approximately 40 px from the bottom edge a 3 pixel wide strip of
>> randomly
>> colored pixels is flickering.
>>
>> PSR 1 is working fine however.
>>
>> This patchset introduces a new quirk to disable PSR 2 specifically on
>> known
>> buggy devices and applies it to the Tongfang PHxTxX1 and PHxTQx1
>> barebones.
> I've been thinking something similar as there is still at least one
> issue which seems to be like panel side issue:
>
> https://gitlab.freedesktop.org/drm/intel/-/issues/7836
>
> Did you considered dpcd_quirk_list in drivers/gpu/drm/drm_dp_helper.c?
>
> I'm not sure which one is more correct though...
Imho, since the proper fix lies within the Intel driver the quirk should also
lie within the Intel driver, because even if the panel has the same problem
combined with an AMD or NVIDIA card the proper fix for them will most likely be
land in the same kernel version. So there could be a period where you no longer
want the quirk for devices combining the panel with an Intel gpu but still with
an AMD GPU or vice versa.
>
>> Signed-off-by: Werner Sembach <[email protected]>
>> Cc: <[email protected]>
>>
>>

2023-02-23 19:03:12

by Werner Sembach

[permalink] [raw]
Subject: Re: [PATCH 0/2] Add quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1


Am 23.02.23 um 19:56 schrieb Werner Sembach:
>
> Am 23.02.23 um 19:26 schrieb Hogander, Jouni:
>> On Wed, 2023-02-22 at 15:17 +0100, Werner Sembach wrote:
>>> On these Barebones PSR 2 is recognized as supported but is very
>>> buggy:
>>> - Upper third of screen does sometimes not updated, resulting in
>>> disappearing cursors or ghosts of already closed Windows saying
>>> behind.
>>> - Approximately 40 px from the bottom edge a 3 pixel wide strip of
>>> randomly
>>> colored pixels is flickering.
>>>
>>> PSR 1 is working fine however.
>>>
>>> This patchset introduces a new quirk to disable PSR 2 specifically on
>>> known
>>> buggy devices and applies it to the Tongfang PHxTxX1 and PHxTQx1
>>> barebones.
>> I've been thinking something similar as there is still at least one
>> issue which seems to be like panel side issue:
>>
>> https://gitlab.freedesktop.org/drm/intel/-/issues/7836
>>
>> Did you considered dpcd_quirk_list in drivers/gpu/drm/drm_dp_helper.c?
>>
>> I'm not sure which one is more correct though...
> Imho, since the proper fix lies within the Intel driver the quirk should also
> lie within the Intel driver, because even if the panel has the same problem
> combined with an AMD or NVIDIA card the proper fix for them will most likely
> be land in the same kernel version. So there could be a period where you no
> longer want the quirk for devices combining the panel with an Intel gpu but
> still with an AMD GPU or vice versa.
*the proper fix for them will most likely not be in the same kernel version.
>>
>>> Signed-off-by: Werner Sembach <[email protected]>
>>> Cc: <[email protected]>
>>>
>>>

2023-02-24 06:46:05

by Hogander, Jouni

[permalink] [raw]
Subject: Re: [PATCH 0/2] Add quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1

On Thu, 2023-02-23 at 20:02 +0100, Werner Sembach wrote:
>
> Am 23.02.23 um 19:56 schrieb Werner Sembach:
> >
> > Am 23.02.23 um 19:26 schrieb Hogander, Jouni:
> > > On Wed, 2023-02-22 at 15:17 +0100, Werner Sembach wrote:
> > > > On these Barebones PSR 2 is recognized as supported but is very
> > > > buggy:
> > > > - Upper third of screen does sometimes not updated, resulting
> > > > in
> > > > disappearing cursors or ghosts of already closed Windows saying
> > > > behind.
> > > > - Approximately 40 px from the bottom edge a 3 pixel wide strip
> > > > of
> > > > randomly
> > > > colored pixels is flickering.
> > > >
> > > > PSR 1 is working fine however.
> > > >
> > > > This patchset introduces a new quirk to disable PSR 2
> > > > specifically on
> > > > known
> > > > buggy devices and applies it to the Tongfang PHxTxX1 and
> > > > PHxTQx1
> > > > barebones.
> > > I've been thinking something similar as there is still at least
> > > one
> > > issue which seems to be like panel side issue:
> > >
> > > https://gitlab.freedesktop.org/drm/intel/-/issues/7836
> > >
> > > Did you considered dpcd_quirk_list in
> > > drivers/gpu/drm/drm_dp_helper.c?
> > >
> > > I'm not sure which one is more correct though...
> > Imho, since the proper fix lies within the Intel driver the quirk
> > should also
> > lie within the Intel driver, because even if the panel has the same
> > problem
> > combined with an AMD or NVIDIA card the proper fix for them will
> > most likely
> > be land in the same kernel version. So there could be a period
> > where you no
> > longer want the quirk for devices combining the panel with an Intel
> > gpu but
> > still with an AMD GPU or vice versa.
> *the proper fix for them will most likely not be in the same kernel
> version.

Yeah, you are right here. Let's target fixing rootcause for your setup.
First patch from your set could be anyways used for issue mentioned
above.

> > >
> > > > Signed-off-by: Werner Sembach <[email protected]>
> > > > Cc: <[email protected]>
> > > >
> > > >

BR,

Jouni Högander