[AMD Official Use Only - General]


> -----Original Message-----
> From: Simon Horman <[email protected]>
> Sent: Friday, August 11, 2023 5:38 PM
> To: Quan, Evan <[email protected]>
> Cc: [email protected]; [email protected]; Deucher, Alexander
> <[email protected]>; Koenig, Christian
> <[email protected]>; Pan, Xinhui <[email protected]>;
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; Limonciello, Mario <[email protected]>;
> [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> Lazar, Lijo <[email protected]>; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected]; linux-
> [email protected]; [email protected]; amd-
> [email protected]; [email protected]; linux-
> [email protected]; [email protected]
> Subject: Re: [PATCH V8 2/9] drivers core: add ACPI based WBRF mechanism
> introduced by AMD
> 
> On Thu, Aug 10, 2023 at 03:37:56PM +0800, Evan Quan wrote:
> > AMD has introduced an ACPI based mechanism to support WBRF for some
> > platforms with AMD dGPU + WLAN. This needs support from BIOS equipped
> > with necessary AML implementations and dGPU firmwares.
> >
> > For those systems without the ACPI mechanism and developing solutions,
> > user can use/fall-back the generic WBRF solution for diagnosing potential
> > interference issues.
> >
> > And for the platform which does not equip with the necessary AMD ACPI
> > implementations but with CONFIG_WBRF_AMD_ACPI built as 'y', it will
> > fall back to generic WBRF solution if the `wbrf` is set as "on".
> >
> > Co-developed-by: Mario Limonciello <[email protected]>
> > Signed-off-by: Mario Limonciello <[email protected]>
> > Co-developed-by: Evan Quan <[email protected]>
> > Signed-off-by: Evan Quan <[email protected]>
> 
> ...
> 
> > diff --git a/drivers/acpi/amd_wbrf.c b/drivers/acpi/amd_wbrf.c
> 
> ...
> 
> > +static bool check_acpi_wbrf(acpi_handle handle, u64 rev, u64 funcs)
> > +{
> > +   int i;
> > +   u64 mask = 0;
> > +   union acpi_object *obj;
> > +
> > +   if (funcs == 0)
> > +           return false;
> > +
> > +   obj = acpi_evaluate_wbrf(handle, rev, 0);
> > +   if (!obj)
> > +           return false;
> > +
> > +   if (obj->type != ACPI_TYPE_BUFFER)
> > +           return false;
> > +
> > +   /*
> > +    * Bit vector providing supported functions information.
> > +    * Each bit marks support for one specific function of the WBRF
> method.
> > +    */
> > +   for (i = 0; i < obj->buffer.length && i < 8; i++)
> > +           mask |= (((u64)obj->buffer.pointer[i]) << (i * 8));
> > +
> > +   ACPI_FREE(obj);
> > +
> > +   if ((mask & BIT(WBRF_ENABLED)) &&
> > +        (mask & funcs) == funcs)
> 
> Hi Evan,
> 
> a minor nit from my side: the indentation of the line above seems odd.
Thanks. Will update this.

Evan
> 
>       if ((mask & BIT(WBRF_ENABLED)) &&
>           (mask & funcs) == funcs)
> 
> > +           return true;
> > +
> > +   return false;
> > +}
> 
> ...

Reply via email to