linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: "Rafael J . Wysocki" <rjw@rjwysocki.net>,
	Len Brown <lenb@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	"russianneuromancer @ ya . ru" <russianneuromancer@ya.ru>,
	linux-mmc@vger.kernel.org, Stable <stable@vger.kernel.org>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: Re: [PATCH] ACPI / LPSS: Work around wrong sdio _ADR 0 entry on some byt/cht devices
Date: Mon, 26 Dec 2016 11:48:19 +0100	[thread overview]
Message-ID: <087d2576-66f8-f3ea-e08b-95e5de9f701c@redhat.com> (raw)
In-Reply-To: <CAJZ5v0ibDwkA2Pc+nkYXS6Mq6CKT3jAnjrfCaEiCtZye5JD75A@mail.gmail.com>

Hi,

On 26-12-16 00:25, Rafael J. Wysocki wrote:
> CC Mika and Andy.
>
> Plus I don't think -stable is going to take your patches directly.

Not sure what you mean with this remark? According to:

Documentation/stable_kernel_rules.txt

Option 1
********

To have the patch automatically included in the stable tree, add the tag

.. code-block:: none

      Cc: stable@vger.kernel.org

in the sign-off area. Once the patch is merged it will be applied to
the stable tree without anything else needing to be done by the author
or subsystem maintainer.


So yes, it won't get merged until it has been merged into Linus'
tree. But AFAICT adding Cc: stable@vger.kernel.org is the right way
to indicate that a patch is a bug-fix which should be applied to
stable kernels once merged, which is my intention of adding the Cc.

Regards,

Hans



>
> On Sun, Dec 25, 2016 at 11:21 AM, Hans de Goede <hdegoede@redhat.com> wrote:
>> The firmware on some cherrytrail devices wrongly adds _ADR 0 to their
>> entry describing the 80860F14 uid "2" sd-controller.
>>
>> I believe the firmware writers intended this as a sdio function address,
>> but it is in the wrong place for this, so it gets interpreted as a pci
>> address, causing the node describing the sd-controller used for the
>> sdio-wifi to get seen as a firmware_node for the pci host bridge, rather
>> then being stand-alone device.
>>
>> This commit adds a byt_sdio_setup function which detects this scenario
>> and removes the wrong firmware_node link from the pci host bridge, which
>> fixes acpi_create_platform_device returning NULL, leading to non-working
>> sdio-wifi.
>>
>> BugLink: https://github.com/hadess/rtl8723bs/issues/80
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>>  drivers/acpi/acpi_lpss.c | 30 ++++++++++++++++++++++++++++++
>>  1 file changed, 30 insertions(+)
>>
>> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
>> index 373657f..df9cc66 100644
>> --- a/drivers/acpi/acpi_lpss.c
>> +++ b/drivers/acpi/acpi_lpss.c
>> @@ -84,6 +84,7 @@ static const struct lpss_device_desc lpss_dma_desc = {
>>  };
>>
>>  struct lpss_private_data {
>> +       struct acpi_device *adev;
>>         void __iomem *mmio_base;
>>         resource_size_t mmio_size;
>>         unsigned int fixed_clk_rate;
>> @@ -154,6 +155,33 @@ static void byt_i2c_setup(struct lpss_private_data *pdata)
>>         writel(0, pdata->mmio_base + LPSS_I2C_ENABLE);
>>  }
>>
>> +static void byt_sdio_setup(struct lpss_private_data *pdata)
>> +{
>> +       unsigned long long adr;
>> +       acpi_status status;
>> +       struct device *dev;
>> +
>> +       /*
>> +        * Some firmware has a broken _ADR 0 enter for the 80860F14:2
>> +        * device, which causes it to get seen as the firmware_node
>> +        * for the pci host bridge, rather then a stand alone device.
>> +        *
>> +        * Check if this is the case, and if it is remove the link.
>> +        */
>> +       if (strcmp(acpi_device_uid(pdata->adev), "2") != 0)
>> +               return;
>> +
>> +       status = acpi_evaluate_integer(pdata->adev->handle, "_ADR", NULL, &adr);
>> +       if (ACPI_FAILURE(status) || adr != 0)
>> +               return;
>> +
>> +       dev = acpi_get_first_physical_node(pdata->adev);
>> +       if (!dev)
>> +               return;
>> +
>> +       acpi_unbind_one(dev);
>> +}
>> +
>>  static const struct lpss_device_desc lpt_dev_desc = {
>>         .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_LTR,
>>         .prv_offset = 0x800,
>> @@ -217,6 +245,7 @@ static const struct lpss_device_desc byt_spi_dev_desc = {
>>
>>  static const struct lpss_device_desc byt_sdio_dev_desc = {
>>         .flags = LPSS_CLK,
>> +       .setup = byt_sdio_setup,
>>  };
>>
>>  static const struct lpss_device_desc byt_i2c_dev_desc = {
>> @@ -425,6 +454,7 @@ static int acpi_lpss_create_device(struct acpi_device *adev,
>>                 goto err_out;
>>         }
>>
>> +       pdata->adev = adev;
>>         pdata->dev_desc = dev_desc;
>>
>>         if (dev_desc->setup)
>> --
>> 2.9.3
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2016-12-26 10:48 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-25 10:21 [PATCH] ACPI / LPSS: Work around wrong sdio _ADR 0 entry on some byt/cht devices Hans de Goede
2016-12-25 23:25 ` Rafael J. Wysocki
2016-12-26 10:48   ` Hans de Goede [this message]
2016-12-26 22:13     ` Rafael J. Wysocki
2016-12-28  9:14   ` Mika Westerberg
2016-12-28 22:30     ` Rafael J. Wysocki
2016-12-29  8:41       ` Mika Westerberg
2016-12-30  1:27         ` [PATCH] ACPI / scan: Prefer devices without _HID/_CID for _ADR matching Rafael J. Wysocki
2017-01-01 20:30           ` Hans de Goede
2017-03-30 20:56             ` Rafael J. Wysocki
2017-03-31 10:39               ` Hans de Goede
2017-03-31 21:23                 ` Rafael J. Wysocki
2017-01-02 10:53           ` Mika Westerberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=087d2576-66f8-f3ea-e08b-95e5de9f701c@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=adrian.hunter@intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=rafael@kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=russianneuromancer@ya.ru \
    --cc=stable@vger.kernel.org \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).