[FSL P50x0] Keyboard and mouse don't work anymore after the devicetree updates for 5.19

Christian Zigotzky chzigotzky at xenosoft.de
Tue Jun 7 02:13:45 AEST 2022


On 06 June 2022 at 04:58 pm, Rob Herring wrote:
> On Fri, May 27, 2022 at 9:23 AM Rob Herring <robh at kernel.org> wrote:
>> On Fri, May 27, 2022 at 3:33 AM Christian Zigotzky
>> <chzigotzky at xenosoft.de> wrote:
>>> On 27 May 2022 at 10:14 am, Prabhakar Mahadev Lad wrote:
>>>> Hi,
>>>>
>>>>> -----Original Message-----
>>>>> From: Christian Zigotzky <chzigotzky at xenosoft.de>
>>>>>
>>>>> On 27 May 2022 at 09:56 am, Prabhakar Mahadev Lad wrote:
>>>>>> Hi,
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Christophe Leroy <christophe.leroy at csgroup.eu>
> [...]
>
>>>>>> Looks like the driver which you are using has not been converted to use
>>>>> platform_get_irq(), could you please check that.
>>>>>> Cheers,
>>>>>> Prabhakar
>>>>> Do you mean the mouse and keyboard driver?
>>>>>
>>>> No it could be your gpio/pinctrl driver assuming the keyboard/mouse are using GPIO's. If you are using interrupts then it might be some hierarchal irqc driver in drivers/irqchip/.
>>>>
>>>> Cheers,
>>>> Prabhakar
>>> Good to know. I only use unmodified drivers from the official Linux
>>> kernel so it's not an issue of the Cyrus+ board.
>> The issue is in drivers/usb/host/fsl-mph-dr-of.c which copies the
>> resources to a child platform device. Can you try the following
>> change:
>>
>> diff --git a/drivers/usb/host/fsl-mph-dr-of.c b/drivers/usb/host/fsl-mph-dr-of.c
>> index 44a7e58a26e3..47d9b7be60da 100644
>> --- a/drivers/usb/host/fsl-mph-dr-of.c
>> +++ b/drivers/usb/host/fsl-mph-dr-of.c
>> @@ -80,8 +80,6 @@ static struct platform_device *fsl_usb2_device_register(
>>                                          const char *name, int id)
>>   {
>>          struct platform_device *pdev;
>> -       const struct resource *res = ofdev->resource;
>> -       unsigned int num = ofdev->num_resources;
>>          int retval;
>>
>>          pdev = platform_device_alloc(name, id);
>> @@ -106,11 +104,7 @@ static struct platform_device *fsl_usb2_device_register(
>>          if (retval)
>>                  goto error;
>>
>> -       if (num) {
>> -               retval = platform_device_add_resources(pdev, res, num);
>> -               if (retval)
>> -                       goto error;
>> -       }
>> +       pdev->dev.of_node = ofdev->dev.of_node;
> >From the log, I think you also need to add this line:
>
> pdev->dev.of_node_reused = true;
>
>>          retval = platform_device_add(pdev);
>>          if (retval)
Hello Rob,

Thanks a lot for your answer.

Is the following patch correct?

--- a/drivers/usb/host/fsl-mph-dr-of.c    2022-05-28 09:10:26.797688422 
+0200
+++ b/drivers/usb/host/fsl-mph-dr-of.c    2022-05-28 09:15:01.668594809 
+0200
@@ -80,8 +80,6 @@ static struct platform_device *fsl_usb2_
                      const char *name, int id)
  {
      struct platform_device *pdev;
-    const struct resource *res = ofdev->resource;
-    unsigned int num = ofdev->num_resources;
      int retval;

      pdev = platform_device_alloc(name, id);
@@ -106,11 +104,7 @@ static struct platform_device *fsl_usb2_
      if (retval)
          goto error;

-    if (num) {
-        retval = platform_device_add_resources(pdev, res, num);
-        if (retval)
-            goto error;
-    }
+    pdev->dev.of_node = ofdev->dev.of_node;
+    pdev->dev.of_node_reused = true;

      retval = platform_device_add(pdev);
      if (retval)

---

Thanks,
Christian


More information about the Linuxppc-dev mailing list