[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2a9f6c23-9c7b-496b-9998-ea0afe526b46@linux.intel.com>
Date: Fri, 9 Aug 2024 16:55:41 +0300
From: Jarkko Nikula <jarkko.nikula@...ux.intel.com>
To: Shyam Sundar S K <Shyam-sundar.S-k@....com>,
Alexandre Belloni <alexandre.belloni@...tlin.com>
Cc: Guruvendra Punugupati <Guruvendra.Punugupati@....com>,
Krishnamoorthi M <krishnamoorthi.m@....com>, linux-i3c@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH RESEND v3 3/6] i3c: mipi-i3c-hci: Add a quirk to set PIO
mode
Hi
On 8/7/24 8:23 AM, Shyam Sundar S K wrote:
> The AMD HCI controller currently only supports PIO mode but exposes DMA
> rings to the OS, which leads to the controller being configured in DMA
> mode. To address this, add a quirk to avoid configuring the controller in
> DMA mode and default to PIO mode.
>
> Additionally, introduce a generic quirk infrastructure to the mipi-i3c-hci
> driver to facilitate seamless future quirk additions.
>
> Co-developed-by: Krishnamoorthi M <krishnamoorthi.m@....com>
> Signed-off-by: Krishnamoorthi M <krishnamoorthi.m@....com>
> Co-developed-by: Guruvendra Punugupati <Guruvendra.Punugupati@....com>
> Signed-off-by: Guruvendra Punugupati <Guruvendra.Punugupati@....com>
> Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@....com>
> ---
...
> +void amd_i3c_hci_quirks_init(struct i3c_hci *hci)
> +{
> +#if defined(CONFIG_X86)
> + if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD)
> + hci->quirks |= HCI_QUIRK_PIO_MODE;
> +#endif
> +}
I was thinking these quirks can be passed as driver_data more cleanly
and be specific only to affected HW if AMD HW would have an unique ACPI
ID for each HW version.
Above X86_VENDOR_AMD might be too generic if and when quirks are fixed
in the future HW :-)
So something like:
static const struct acpi_device_id i3c_hci_acpi_match[] = {
{"AMDI1234", HCI_QUIRK_PIO_MODE | HCI_QUIRK_OD_PP_TIMING |
HCI_QUIRK_RESP_BUF_THLD},
{}
};
and set them in the i3c_hci_probe() as:
hci->quirks = (unsigned long)device_get_match_data(&pdev->dev);
Powered by blists - more mailing lists