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.limoncie...@amd.com>
> Signed-off-by: Mario Limonciello <mario.limoncie...@amd.com>
> Co-developed-by: Evan Quan <evan.q...@amd.com>
> Signed-off-by: Evan Quan <evan.q...@amd.com>

...

> 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.

        if ((mask & BIT(WBRF_ENABLED)) &&
            (mask & funcs) == funcs)

> +             return true;
> +
> +     return false;
> +}

...

Reply via email to