[AMD Official Use Only - General] > -----Original Message----- > From: Simon Horman <horms@xxxxxxxxxx> > Sent: Friday, August 11, 2023 5:38 PM > To: Quan, Evan <Evan.Quan@xxxxxxx> > Cc: rafael@xxxxxxxxxx; lenb@xxxxxxxxxx; Deucher, Alexander > <Alexander.Deucher@xxxxxxx>; Koenig, Christian > <Christian.Koenig@xxxxxxx>; Pan, Xinhui <Xinhui.Pan@xxxxxxx>; > airlied@xxxxxxxxx; daniel@xxxxxxxx; johannes@xxxxxxxxxxxxxxxx; > davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx; kuba@xxxxxxxxxx; > pabeni@xxxxxxxxxx; Limonciello, Mario <Mario.Limonciello@xxxxxxx>; > mdaenzer@xxxxxxxxxx; maarten.lankhorst@xxxxxxxxxxxxxxx; > tzimmermann@xxxxxxx; hdegoede@xxxxxxxxxx; jingyuwang_vip@xxxxxxx; > Lazar, Lijo <Lijo.Lazar@xxxxxxx>; jim.cromie@xxxxxxxxx; > bellosilicio@xxxxxxxxx; andrealmeid@xxxxxxxxxx; trix@xxxxxxxxxx; > jsg@xxxxxxxxx; arnd@xxxxxxxx; andrew@xxxxxxx; linux- > kernel@xxxxxxxxxxxxxxx; linux-acpi@xxxxxxxxxxxxxxx; amd- > gfx@xxxxxxxxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx; linux- > wireless@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx > 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 <mario.limonciello@xxxxxxx> > > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> > > Co-developed-by: Evan Quan <evan.quan@xxxxxxx> > > Signed-off-by: Evan Quan <evan.quan@xxxxxxx> > > ... > > > 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; > > +} > > ...