public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Jin, Yao" <yao.jin@linux.intel.com>
To: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: Adam Williamson <awilliam@redhat.com>,
	Benjamin Tissoires <benjamin.tissoires@gmail.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	alan@linux.intel.com, mathias.nyman@intel.com,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	aubrey.li@intel.com
Subject: Re: [PATCH] pinctrl-baytrail: fix for irq descriptor conflict on ASUS T100TA
Date: Fri, 25 Apr 2014 20:46:42 +0800	[thread overview]
Message-ID: <535A5932.4030506@linux.intel.com> (raw)
In-Reply-To: <20140425094038.GK30677@intel.com>



On 2014/4/25 17:40, Mika Westerberg wrote:
> [+Aubrey]
> 
> On Fri, Apr 25, 2014 at 03:27:42PM +0800, Jin, Yao wrote:
>>
>>
>> On 2014/4/25 5:33, Adam Williamson wrote:
>>> On Thu, 2014-04-24 at 21:30 +0800, Jin, Yao wrote:
>>>
>>>>> Jin, do you have any idea what is going on?
>>>>>
>>>>
>>>> Maybe neither the patch (http://dougvj.net/baytrail_gpio_quirk_v3.patch)
>>>> nor my patch breaks the touch screen.
>>>>
>>>> I have tried the clean 3.15-rc2 with following patch which just adds
>>>> back the ACPIID "INT33FC", but the touch screen still doesn't work (To
>>>> avoid the i915 crash issue, I use with the boot option "nomodeset" in test).
>>>>
>>>> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
>>>> index 69e29f4..d79c6d7 100644
>>>> --- a/drivers/acpi/acpi_lpss.c
>>>> +++ b/drivers/acpi/acpi_lpss.c
>>>> @@ -180,6 +180,7 @@ static const struct acpi_device_id
>>>> acpi_lpss_device_ids[] = {
>>>>         { "80860F14", (unsigned long)&byt_sdio_dev_desc },
>>>>         { "80860F41", (unsigned long)&byt_i2c_dev_desc },
>>>>         { "INT33B2", },
>>>> +       { "INT33FC", },
>>>>
>>>>         { "INT3430", (unsigned long)&lpt_dev_desc },
>>>>         { "INT3431", (unsigned long)&lpt_dev_desc },
>>>> diff --git a/drivers/pinctrl/pinctrl-baytrail.c
>>>> b/drivers/pinctrl/pinctrl-baytrail.c
>>>> index 6e8301f..447f1dc 100644
>>>> --- a/drivers/pinctrl/pinctrl-baytrail.c
>>>> +++ b/drivers/pinctrl/pinctrl-baytrail.c
>>>> @@ -572,6 +572,7 @@ static const struct dev_pm_ops byt_gpio_pm_ops = {
>>>>
>>>>  static const struct acpi_device_id byt_gpio_acpi_match[] = {
>>>>         { "INT33B2", 0 },
>>>> +       { "INT33FC", 0 },
>>>>         { }
>>>>  };
>>>>  MODULE_DEVICE_TABLE(acpi, byt_gpio_acpi_match);
>>>>
>>>> Since the clean 3.15-rc2 doesn't contain "INT33FC", so the baytrail gpio
>>>> doesn't actually go into effect.
>>>
>>> Well, I just ran another test too. I built a kernel (3.15rc2) with both
>>> v3 of Doug's SDIO device enumeration patch -
>>> http://dougvj.net/baytrail_gpio_quirk_v3.patch - and the new patch for
>>> the IRQ allocation issue by Thomas Gleixner,
>>> https://patchwork.kernel.org/patch/4051581/ . That kernel gives me a
>>> working touchscreen. Note that
>>> http://dougvj.net/baytrail_gpio_quirk_v3.patch includes both the blocks
>>> you mention (i.e. it adds INT33FC in both places).
>>>
>>> So, it really seems like for me at least, it's the combination of Doug's
>>> patch and your approach to fixing the IRQ allocation issue that breaks
>>> the touchscreen. Thomas' approach, even combined with Doug's patch,
>>> seems to work fine.
>>>
>>
>> I'm trying the clean upstream 3.15-rc2 with the patch by Thomas Gleixner
>> (https://patchwork.kernel.org/patch/4051581/) and the patch as following
>> which only adds INT33FC, the touch screen doesn't work. I didn't add
>> Doug's SDIO device enumeration patch in this test.
>>
>> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
>> index 69e29f4..d79c6d7 100644
>> --- a/drivers/acpi/acpi_lpss.c
>> +++ b/drivers/acpi/acpi_lpss.c
>> @@ -180,6 +180,7 @@ static const struct acpi_device_id
>> acpi_lpss_device_ids[] = {
>>         { "80860F14", (unsigned long)&byt_sdio_dev_desc },
>>         { "80860F41", (unsigned long)&byt_i2c_dev_desc },
>>         { "INT33B2", },
>> +       { "INT33FC", },
>>
>>         { "INT3430", (unsigned long)&lpt_dev_desc },
>>         { "INT3431", (unsigned long)&lpt_dev_desc },
>> diff --git a/drivers/pinctrl/pinctrl-baytrail.c
>> b/drivers/pinctrl/pinctrl-baytrail.c
>> index 6e8301f..447f1dc 100644
>> --- a/drivers/pinctrl/pinctrl-baytrail.c
>> +++ b/drivers/pinctrl/pinctrl-baytrail.c
>> @@ -572,6 +572,7 @@ static const struct dev_pm_ops byt_gpio_pm_ops = {
>>
>>  static const struct acpi_device_id byt_gpio_acpi_match[] = {
>>         { "INT33B2", 0 },
>> +       { "INT33FC", 0 },
>>         { }
>>  };
>>  MODULE_DEVICE_TABLE(acpi, byt_gpio_acpi_match);
>>
>> It's still not clear to me why the touch screen doesn't work. As above
>> test, my patch is not added in.
> 
> With patch from Thomas and below patch, I got working touchscreen. Note
> that you need to disable runtime PM from SDHCI (or from some other LPSS
> driver) so that the LPSS stays functional. Once all devices are powered
> off, the block doesn't wake up anymore. Aubrey is investigating that.
> 
> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
> index 69e29f409d4c..d79c6d7f598e 100644
> --- a/drivers/acpi/acpi_lpss.c
> +++ b/drivers/acpi/acpi_lpss.c
> @@ -180,6 +180,7 @@ static const struct acpi_device_id acpi_lpss_device_ids[] = {
>  	{ "80860F14", (unsigned long)&byt_sdio_dev_desc },
>  	{ "80860F41", (unsigned long)&byt_i2c_dev_desc },
>  	{ "INT33B2", },
> +	{ "INT33FC", },
>  
>  	{ "INT3430", (unsigned long)&lpt_dev_desc },
>  	{ "INT3431", (unsigned long)&lpt_dev_desc },
> diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c
> index ebb3f392b589..c5d4185380b1 100644
> --- a/drivers/mmc/host/sdhci-acpi.c
> +++ b/drivers/mmc/host/sdhci-acpi.c
> @@ -130,8 +130,7 @@ static const struct sdhci_acpi_slot sdhci_acpi_slot_int_sdio = {
>  };
>  
>  static const struct sdhci_acpi_slot sdhci_acpi_slot_int_sd = {
> -	.flags   = SDHCI_ACPI_SD_CD | SDHCI_ACPI_SD_CD_OVERRIDE_LEVEL |
> -		   SDHCI_ACPI_RUNTIME_PM,
> +	.flags   = SDHCI_ACPI_SD_CD | SDHCI_ACPI_SD_CD_OVERRIDE_LEVEL,
>  	.quirks2 = SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON,
>  };
>  
> diff --git a/drivers/pinctrl/pinctrl-baytrail.c b/drivers/pinctrl/pinctrl-baytrail.c
> index 6e8301f77187..7c65c9dab215 100644
> --- a/drivers/pinctrl/pinctrl-baytrail.c
> +++ b/drivers/pinctrl/pinctrl-baytrail.c
> @@ -527,12 +527,6 @@ static int byt_gpio_probe(struct platform_device *pdev)
>  	gc->can_sleep = false;
>  	gc->dev = dev;
>  
> -	ret = gpiochip_add(gc);
> -	if (ret) {
> -		dev_err(&pdev->dev, "failed adding byt-gpio chip\n");
> -		return ret;
> -	}
> -
>  	/* set up interrupts  */
>  	irq_rc = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
>  	if (irq_rc && irq_rc->start) {
> @@ -550,6 +544,12 @@ static int byt_gpio_probe(struct platform_device *pdev)
>  		irq_set_chained_handler(hwirq, byt_gpio_irq_handler);
>  	}
>  
> +	ret = gpiochip_add(gc);
> +	if (ret) {
> +		dev_err(&pdev->dev, "failed adding byt-gpio chip\n");
> +		return ret;
> +	}
> +
>  	pm_runtime_enable(dev);
>  
>  	return 0;
> @@ -572,6 +572,7 @@ static const struct dev_pm_ops byt_gpio_pm_ops = {
>  
>  static const struct acpi_device_id byt_gpio_acpi_match[] = {
>  	{ "INT33B2", 0 },
> +	{ "INT33FC", 0 },
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(acpi, byt_gpio_acpi_match);
> 

Yes, I just tried. With the HSUART runtime PM being disabled, the touch
screen works.

  reply	other threads:[~2014-04-25 12:46 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-16 12:05 [PATCH] pinctrl-baytrail: fix for irq descriptor conflict on ASUS T100TA Jin Yao
2014-04-18 20:44 ` Benjamin Tissoires
2014-04-18 21:17   ` Adam Williamson
2014-04-20 10:31   ` Jin, Yao
2014-04-20 12:08     ` Jin, Yao
2014-04-20 15:28       ` Adam Williamson
2014-04-21  6:27         ` Jin, Yao
2014-04-21 13:28           ` Jin, Yao
2014-04-21 14:30             ` Benjamin Tissoires
2014-04-21 15:51               ` Adam Williamson
2014-04-23  5:16               ` Adam Williamson
2014-04-23  8:34                 ` Mika Westerberg
2014-04-23 12:23                   ` Mika Westerberg
2014-04-23 23:18                     ` Adam Williamson
2014-04-24 13:30                     ` Jin, Yao
2014-04-24 15:58                       ` Adam Williamson
2014-04-24 21:33                       ` Adam Williamson
2014-04-25  7:27                         ` Jin, Yao
2014-04-25  9:40                           ` Mika Westerberg
2014-04-25 12:46                             ` Jin, Yao [this message]
2014-04-25  9:32                         ` Linus Walleij
2014-04-25 15:13                           ` Adam Williamson
2014-04-26  3:04                             ` Jin, Yao
2014-04-26  3:42                               ` Jin, Yao
2014-05-02 22:46                                 ` Linus Walleij
2014-04-20 12:56     ` Benjamin Tissoires
2014-04-22 11:51 ` Mika Westerberg
2014-04-22 12:46   ` Jin, Yao

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=535A5932.4030506@linux.intel.com \
    --to=yao.jin@linux.intel.com \
    --cc=alan@linux.intel.com \
    --cc=aubrey.li@intel.com \
    --cc=awilliam@redhat.com \
    --cc=benjamin.tissoires@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=mika.westerberg@linux.intel.com \
    /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