All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pawel Laszczak <pawell@cadence.com>
To: Roger Quadros <rogerq@ti.com>, "balbi@kernel.org" <balbi@kernel.org>
Cc: Peter Chen <peter.chen@nxp.com>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Rahul Kumar <kurahul@cadence.com>
Subject: RE: [PATCH] usb: cdns3: platform_get_irq_byname_optional instead platform_get_irq_byname
Date: Wed, 7 Oct 2020 03:12:52 +0000	[thread overview]
Message-ID: <DM6PR07MB55293FED0365CA0B70271F45DD0A0@DM6PR07MB5529.namprd07.prod.outlook.com> (raw)
In-Reply-To: <DM6PR07MB5529E919C70D3E4D0C572691DD0C0@DM6PR07MB5529.namprd07.prod.outlook.com>

Felipe, 

Please  ignore this patch. I will create the new one. 
It's no sense to send the v2 because I have to change the patch name,
Description and contents.

Regards,
Pawel,

>Roger,
>
>>Pawel,
>>
>>On 05/10/2020 08:54, Pawel Laszczak wrote:
>>> Roger,
>>>>
>>>> Pawel,
>>>>
>>>> On 02/10/2020 12:08, Pawel Laszczak wrote:
>>>>> Roger,
>>>>>
>>>>>>
>>>>>> On 30/09/2020 09:57, Pawel Laszczak wrote:
>>>>>>> To avoid duplicate error information patch replaces platform_get_irq_byname
>>>>>>> into platform_get_irq_byname_optional.
>>>>>>
>>>>>> What is duplicate error information?
>>>>>
>>>>> The function platform_get_irq_byname print:
>>>>> " dev_err(&dev->dev, "IRQ %s not found\n", name);" if error occurred.
>>>>>
>>>>> In core.c we have the another error message below invoking this function.
>>>>> e.g
>>>>> 	if (cdns->dev_irq < 0)
>>>>> 		dev_err(dev, "couldn't get peripheral irq\n");
>>>>>
>>>>> So, it's looks like one dev_err is  redundant.
>>>>
>>>> If we want all 3 IRQs to be valid irrespective of dr_mode then we should
>>>> use platform_get_irq_byname() and error out in probe if (ret < 0 && ret != -EPROBE_DEFER).
>>>>
>>>> We can get rid of the irq check and duplicate error message in other places.
>>>
>>> To be sure we understand each other correctly.
>>>
>>> Are You suggesting  to leave the  platform_get_irq_byname()
>>> and rid of from core.c the following lines :
>>>
>>> if (cdns->dev_irq < 0)
>>> 	dev_err(dev, "couldn't get peripheral irq\n");
>>>
>>> and
>>>
>>> dev_err(dev, "couldn't get otg irq\n");
>>> ?
>>
>>Yes.
>>
>>>
>>> A word of explanation why this patch has been sent.
>>> During reviewing the cdnsp driver Chunfeng Yun add such comment:
>>>
>>> "
>>>> +	cdns->dev_irq = platform_get_irq_byname(pdev, "peripheral");
>>>> +	if (cdns->dev_irq == -EPROBE_DEFER)
>>>> +		return cdns->dev_irq;
>>>> +
>>>> +	if (cdns->dev_irq < 0)
>>>> +		dev_err(dev, "couldn't get peripheral irq\n");
>>> Use platform_get_irq_byname_optional? otherwise no need print this log,
>>> platform_get_irq_byname() will print it.
>>> "
>>>
>>> In this patch I've chosen the platform_get_irq_byname_optional because both
>>> function do the same but the error message from core.c tell us little more then
>>> generic message from platform_get_irq_byname.
>>
>>Using platform_get_irq_byname_optional() says driver expects it is optional but
>>only to fail later. It will be confusing to new reader that's all. I leave it to
>>you to decide what approach to take.
>
>Thanks for clarification.
>I will send  new patch with platform_get_irq_byname.
>
>Cheers,
>Pawel
>
>>
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>> A change was suggested during reviewing CDNSP driver by Chunfeng Yun.
>>>>>>>
>>>>>>> Signed-off-by: Pawel Laszczak <pawell@cadence.com>
>>>>>>> ---
>>>>>>>     drivers/usb/cdns3/core.c | 4 ++--
>>>>>>>     1 file changed, 2 insertions(+), 2 deletions(-)
>>>>>>>
>>>>>>> diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c
>>>>>>> index a0f73d4711ae..a3f6dc44cf3a 100644
>>>>>>> --- a/drivers/usb/cdns3/core.c
>>>>>>> +++ b/drivers/usb/cdns3/core.c
>>>>>>> @@ -465,7 +465,7 @@ static int cdns3_probe(struct platform_device *pdev)
>>>>>>>
>>>>>>>     	cdns->xhci_res[1] = *res;
>>>>>>>
>>>>>>> -	cdns->dev_irq = platform_get_irq_byname(pdev, "peripheral");
>>>>>>> +	cdns->dev_irq = platform_get_irq_byname_optional(pdev, "peripheral");
>>>>>>
>>>>>> As per DT binding document, these are mandatory properties
>>>>>
>>>>> I think that name platform_get_irq_byname_optional is little confusing.
>>>>> Function descriptions show that both are almost identical:
>>>>> /**
>>>>>    * platform_get_irq_byname_optional - get an optional IRQ for a device by name
>>>>>    * @dev: platform device
>>>>>    * @name: IRQ name
>>>>>    *
>>>>>    * Get an optional IRQ by name like platform_get_irq_byname(). Except that it
>>>>>    * does not print an error message if an IRQ can not be obtained.
>>>>>    *
>>>>>    * Return: non-zero IRQ number on success, negative error number on failure.
>>>>>    */
>>>>>
>>>>>>
>>>>>>    - interrupts: Interrupts used by cdns3 controller:
>>>>>>           "host" - interrupt used by XHCI driver.
>>>>>>           "peripheral" - interrupt used by device driver
>>>>>>           "otg" - interrupt used by DRD/OTG  part of driver
>>>>>>
>>>>>> for dr_mode == "otg" -> all 3 are mandatory.
>>>>>> for dr_mode == "host" -> "otg" and "peripheral" IRQs are not required.
>>>>>> for dr_mode == "periphearal" -> "otg" and "host" IRQs are not required.
>>>>>>
>>>>>>>     	if (cdns->dev_irq == -EPROBE_DEFER)
>>>>>>>     		return cdns->dev_irq;
>>>>>>>
>>>>>>> @@ -477,7 +477,7 @@ static int cdns3_probe(struct platform_device *pdev)
>>>>>>>     		return PTR_ERR(regs);
>>>>>>>     	cdns->dev_regs	= regs;
>>>>>>>
>>>>>>> -	cdns->otg_irq = platform_get_irq_byname(pdev, "otg");
>>>>>>> +	cdns->otg_irq = platform_get_irq_byname_optional(pdev, "otg");
>>>>>>>     	if (cdns->otg_irq == -EPROBE_DEFER)
>>>>>>>     		return cdns->otg_irq;
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>> Regards,
>>>>> Pawel
>>>>>
>>>>
>>>> --
>>>> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
>>>> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
>>
>>--
>>Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
>>Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

      reply	other threads:[~2020-10-07  3:13 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-30  6:57 [PATCH] usb: cdns3: platform_get_irq_byname_optional instead platform_get_irq_byname Pawel Laszczak
2020-09-30  7:24 ` Pawel Laszczak
2020-10-02  8:53 ` Roger Quadros
2020-10-02  9:08   ` Pawel Laszczak
2020-10-02 10:06     ` Roger Quadros
2020-10-05  5:54       ` Pawel Laszczak
2020-10-05  8:43         ` Roger Quadros
2020-10-05  8:49           ` Pawel Laszczak
2020-10-07  3:12             ` Pawel Laszczak [this message]

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=DM6PR07MB55293FED0365CA0B70271F45DD0A0@DM6PR07MB5529.namprd07.prod.outlook.com \
    --to=pawell@cadence.com \
    --cc=balbi@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=kurahul@cadence.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=peter.chen@nxp.com \
    --cc=rogerq@ti.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.