Re: [RFC 2/2] mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio host controller sub-vended by NI

From: Adrian Hunter
Date: Tue Nov 15 2016 - 08:25:06 EST


On 11/11/16 21:49, Julia Cartwright wrote:
> On Wed, Nov 09, 2016 at 10:08:29AM -0600, Zach Brown wrote:
>> On Wed, Nov 09, 2016 at 03:24:24PM +0200, Adrian Hunter wrote:
>>> On 08/11/16 22:07, Zach Brown wrote:
>>>> On NI 9037 boards the max SDIO frequency is limited by trace lengths
>>>> and other layout choices. The max SDIO frequency is stored in an ACPI
>>>> table, as MXFQ.
>>>>
>>>> The driver reads the ACPI entry MXFQ during sdio_probe_slot and sets the
>>>> f_max field of the host with it.
>>>>
>>>> Signed-off-by: Nathan Sullivan <nathan.sullivan@xxxxxx>
>>>> Reviewed-by: Jaeden Amero <jaeden.amero@xxxxxx>
>>>> Reviewed-by: Josh Cartwright <joshc@xxxxxx>
>>>> Signed-off-by: Zach Brown <zach.brown@xxxxxx>
> [..]
>>>> static int ni_byt_sdio_probe_slot(struct sdhci_pci_slot *slot)
>>>> {
>>>> +#ifdef CONFIG_ACPI
>>>> + /* Get max freq from ACPI for NI hardware */
>>>> + acpi_handle acpi_hdl;
>>>> + acpi_status status;
>>>> + struct acpi_buffer acpi_result = {
>>>> + ACPI_ALLOCATE_BUFFER, NULL };
>>>> + union acpi_object *acpi_buffer;
>>>> + int max_freq;
>>>> +
>>>> + status = acpi_get_handle(ACPI_HANDLE(&slot->chip->pdev->dev), "MXFQ",
>>>> + &acpi_hdl);
>>>
>>> Is "MXFQ" an object that has already been deployed or are you inventing it
>>> now? In the latter case, did you consider device properties as an alternative?
>>>
>> "MXFQ" is an object that we have already deployed on some of our devices.
>
> Unfortunately, the whole ACPI device properties table discussion was
> just starting at the point where we were putting the firmware together
> for these devices :(. Had we engineered the firmware today, we would
> certainly have looked at using it.

No problem.

WRT the code, could acpi_evaluate_integer() be used instead of
acpi_get_handle()/acpi_evaluate_object()?