From: Felipe Balbi <balbi@kernel.org>
To: Paul Cercueil <paul@crapouillou.net>
Cc: 周琰杰 <zhouyanjie@wanyeetech.com>, 周正 <sernia.zhou@foxmail.com>,
漆鹏振 <aric.pzqi@ingenic.com>,
od@zcrc.me, "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/1] USB: PHY: JZ4770: Fix uninitialized value written to HW register
Date: Thu, 27 Aug 2020 16:25:18 +0300 [thread overview]
Message-ID: <87bliwi5kx.fsf@kernel.org> (raw)
In-Reply-To: <PN4QFQ.KWNBY2ZWQ7XC2@crapouillou.net>
[-- Attachment #1: Type: text/plain, Size: 4058 bytes --]
Hi,
Paul Cercueil <paul@crapouillou.net> writes:
>>> @@ -172,7 +172,8 @@ static int ingenic_usb_phy_init(struct usb_phy
>>> *phy)
>>> return err;
>>> }
>>>
>>> - priv->soc_info->usb_phy_init(phy);
>>> + reg = priv->soc_info->usb_phy_init(phy);
>>> + writel(reg, priv->base + REG_USBPCR_OFFSET);
>>
>> not fixing any bug.
>>
>> Looking at the code, the bug follows after this line. It would suffice
>> to read REG_USBPCR_OFFSET in order to initialize reg. This bug fix
>> could
>> have been a one liner.
>
> There's no need to re-read a register when you have the value readily
> available. It just needs to be returned from the usb_phy_init
> callbacks. But yes, it's not a one-liner.
there's a difference between making a bug fix and reworking the behavior
of the driver ;-)
>>> @@ -195,19 +196,15 @@ static void ingenic_usb_phy_remove(void *phy)
>>> usb_remove_phy(phy);
>>> }
>>>
>>> -static void jz4770_usb_phy_init(struct usb_phy *phy)
>>> +static u32 jz4770_usb_phy_init(struct usb_phy *phy)
>>
>> not a bug fix
>>
>>> {
>>> - struct jz4770_phy *priv = phy_to_jz4770_phy(phy);
>>> - u32 reg;
>>> -
>>> - reg = USBPCR_AVLD_REG | USBPCR_COMMONONN | USBPCR_IDPULLUP_ALWAYS
>>> |
>>> + return USBPCR_AVLD_REG | USBPCR_COMMONONN |
>>> USBPCR_IDPULLUP_ALWAYS |
>>> USBPCR_COMPDISTUNE_DFT | USBPCR_OTGTUNE_DFT |
>>> USBPCR_SQRXTUNE_DFT |
>>> USBPCR_TXFSLSTUNE_DFT | USBPCR_TXRISETUNE_DFT |
>>> USBPCR_TXVREFTUNE_DFT |
>>> USBPCR_POR;
>>> - writel(reg, priv->base + REG_USBPCR_OFFSET);
>>
>> not a bug fix
>>
>>> }
>>>
>>> -static void jz4780_usb_phy_init(struct usb_phy *phy)
>>> +static u32 jz4780_usb_phy_init(struct usb_phy *phy)
>>
>> not a bug fix
>>
>>> @@ -216,11 +213,10 @@ static void jz4780_usb_phy_init(struct
>>> usb_phy *phy)
>>> USBPCR1_WORD_IF_16BIT;
>>> writel(reg, priv->base + REG_USBPCR1_OFFSET);
>>>
>>> - reg = USBPCR_TXPREEMPHTUNE | USBPCR_COMMONONN | USBPCR_POR;
>>> - writel(reg, priv->base + REG_USBPCR_OFFSET);
>>> + return USBPCR_TXPREEMPHTUNE | USBPCR_COMMONONN | USBPCR_POR;
>>
>> not a bug fix
>>
>>> }
>>>
>>> -static void x1000_usb_phy_init(struct usb_phy *phy)
>>> +static u32 x1000_usb_phy_init(struct usb_phy *phy)
>>
>> not a bug fix
>>
>>> {
>>> struct jz4770_phy *priv = phy_to_jz4770_phy(phy);
>>> u32 reg;
>>> @@ -228,13 +224,12 @@ static void x1000_usb_phy_init(struct usb_phy
>>> *phy)
>>> reg = readl(priv->base + REG_USBPCR1_OFFSET) |
>>> USBPCR1_WORD_IF_16BIT;
>>> writel(reg, priv->base + REG_USBPCR1_OFFSET);
>>>
>>> - reg = USBPCR_SQRXTUNE_DCR_20PCT | USBPCR_TXPREEMPHTUNE |
>>> + return USBPCR_SQRXTUNE_DCR_20PCT | USBPCR_TXPREEMPHTUNE |
>>> USBPCR_TXHSXVTUNE_DCR_15MV | USBPCR_TXVREFTUNE_INC_25PPT |
>>> USBPCR_COMMONONN | USBPCR_POR;
>>> - writel(reg, priv->base + REG_USBPCR_OFFSET);
>>
>> not a bug fix
>>
>>> }
>>>
>>> -static void x1830_usb_phy_init(struct usb_phy *phy)
>>> +static u32 x1830_usb_phy_init(struct usb_phy *phy)
>>
>> not a bug fix
>>
>>> {
>>> struct jz4770_phy *priv = phy_to_jz4770_phy(phy);
>>> u32 reg;
>>> @@ -246,9 +241,8 @@ static void x1830_usb_phy_init(struct usb_phy
>>> *phy)
>>> USBPCR1_DMPD | USBPCR1_DPPD;
>>> writel(reg, priv->base + REG_USBPCR1_OFFSET);
>>>
>>> - reg = USBPCR_IDPULLUP_OTG | USBPCR_VBUSVLDEXT
>>> | USBPCR_TXPREEMPHTUNE |
>>> + return USBPCR_IDPULLUP_OTG | USBPCR_VBUSVLDEXT |
>>> USBPCR_TXPREEMPHTUNE |
>>> USBPCR_COMMONONN | USBPCR_POR;
>>> - writel(reg, priv->base + REG_USBPCR_OFFSET);
>>
>> not a bug fix
>
> Well, if you don't like my bug fix, next time wait for my Reviewed-by.
why so angry? Take a break every once in a while. Besides, someone else
already sent the oneliner before you ;-)
In any case, why should I wait for your Reviewed-by? Get maintainer
doesn't list you as the maintainer for it. Do you want to update
MAINTAINERS by any chance?
--
balbi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 857 bytes --]
next prev parent reply other threads:[~2020-08-27 13:27 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-27 12:43 [PATCH 0/1] USB: PHY: JZ4770: Next time, please test it Paul Cercueil
2020-08-27 12:43 ` [PATCH 1/1] USB: PHY: JZ4770: Fix uninitialized value written to HW register Paul Cercueil
2020-08-27 12:58 ` Felipe Balbi
2020-08-27 13:11 ` Paul Cercueil
2020-08-27 13:25 ` Felipe Balbi [this message]
2020-08-27 13:50 ` Paul Cercueil
2020-08-27 14:26 ` Felipe Balbi
2020-08-27 15:35 ` Zhou Yanjie
2020-09-09 10:23 ` Pavel Machek
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=87bliwi5kx.fsf@kernel.org \
--to=balbi@kernel.org \
--cc=aric.pzqi@ingenic.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=od@zcrc.me \
--cc=paul@crapouillou.net \
--cc=sernia.zhou@foxmail.com \
--cc=zhouyanjie@wanyeetech.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.