diff mbox series

[v3,2/2] USB: storage: ums-realtek: Whitelist auto-delink support

Message ID 20190827173450.13572-2-kai.heng.feng@canonical.com (mailing list archive)
State Mainlined
Commit 1902a01e2bcc3abd7c9a18dc05e78c7ab4a53c54
Headers show
Series [v3,1/2] USB: storage: ums-realtek: Update module parameter description for auto_delink_en | expand

Commit Message

Kai-Heng Feng Aug. 27, 2019, 5:34 p.m. UTC
Auto-delink requires writing special registers to ums-realtek devices.
Unconditionally enable auto-delink may break newer devices.

So only enable auto-delink by default for the original three IDs,
0x0138, 0x0158 and 0x0159.

Realtek is working on a patch to properly support auto-delink for other
IDs.

BugLink: https://bugs.launchpad.net/bugs/1838886
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
v3:
- Whitelisting instead of adding new module parameter.
v2:
- Use auto_delink_support instead of auto_delink_enable.

 drivers/usb/storage/realtek_cr.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

Comments

Alan Stern Aug. 27, 2019, 6:56 p.m. UTC | #1
On Wed, 28 Aug 2019, Kai-Heng Feng wrote:

> Auto-delink requires writing special registers to ums-realtek devices.
> Unconditionally enable auto-delink may break newer devices.
> 
> So only enable auto-delink by default for the original three IDs,
> 0x0138, 0x0158 and 0x0159.
> 
> Realtek is working on a patch to properly support auto-delink for other
> IDs.
> 
> BugLink: https://bugs.launchpad.net/bugs/1838886
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> ---
> v3:
> - Whitelisting instead of adding new module parameter.
> v2:
> - Use auto_delink_support instead of auto_delink_enable.
> 
>  drivers/usb/storage/realtek_cr.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/usb/storage/realtek_cr.c b/drivers/usb/storage/realtek_cr.c
> index beaffac805af..1d9ce9cbc831 100644
> --- a/drivers/usb/storage/realtek_cr.c
> +++ b/drivers/usb/storage/realtek_cr.c
> @@ -996,12 +996,15 @@ static int init_realtek_cr(struct us_data *us)
>  			goto INIT_FAIL;
>  	}
>  
> -	if (CHECK_FW_VER(chip, 0x5888) || CHECK_FW_VER(chip, 0x5889) ||
> -	    CHECK_FW_VER(chip, 0x5901))
> -		SET_AUTO_DELINK(chip);
> -	if (STATUS_LEN(chip) == 16) {
> -		if (SUPPORT_AUTO_DELINK(chip))
> +	if (CHECK_PID(chip, 0x0138) || CHECK_PID(chip, 0x0158) ||
> +	    CHECK_PID(chip, 0x0159)) {
> +		if (CHECK_FW_VER(chip, 0x5888) || CHECK_FW_VER(chip, 0x5889) ||
> +				CHECK_FW_VER(chip, 0x5901))
>  			SET_AUTO_DELINK(chip);
> +		if (STATUS_LEN(chip) == 16) {
> +			if (SUPPORT_AUTO_DELINK(chip))
> +				SET_AUTO_DELINK(chip);
> +		}
>  	}
>  #ifdef CONFIG_REALTEK_AUTOPM
>  	if (ss_en)

For both patches in this series:

Acked-by: Alan Stern <stern@rowland.harvard.edu>

Shouldn't this patch go into the -stable kernels as well?

Alan Stern
Greg KH Aug. 27, 2019, 7:23 p.m. UTC | #2
On Tue, Aug 27, 2019 at 02:56:36PM -0400, Alan Stern wrote:
> On Wed, 28 Aug 2019, Kai-Heng Feng wrote:
> 
> > Auto-delink requires writing special registers to ums-realtek devices.
> > Unconditionally enable auto-delink may break newer devices.
> > 
> > So only enable auto-delink by default for the original three IDs,
> > 0x0138, 0x0158 and 0x0159.
> > 
> > Realtek is working on a patch to properly support auto-delink for other
> > IDs.
> > 
> > BugLink: https://bugs.launchpad.net/bugs/1838886
> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> > ---
> > v3:
> > - Whitelisting instead of adding new module parameter.
> > v2:
> > - Use auto_delink_support instead of auto_delink_enable.
> > 
> >  drivers/usb/storage/realtek_cr.c | 13 ++++++++-----
> >  1 file changed, 8 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/usb/storage/realtek_cr.c b/drivers/usb/storage/realtek_cr.c
> > index beaffac805af..1d9ce9cbc831 100644
> > --- a/drivers/usb/storage/realtek_cr.c
> > +++ b/drivers/usb/storage/realtek_cr.c
> > @@ -996,12 +996,15 @@ static int init_realtek_cr(struct us_data *us)
> >  			goto INIT_FAIL;
> >  	}
> >  
> > -	if (CHECK_FW_VER(chip, 0x5888) || CHECK_FW_VER(chip, 0x5889) ||
> > -	    CHECK_FW_VER(chip, 0x5901))
> > -		SET_AUTO_DELINK(chip);
> > -	if (STATUS_LEN(chip) == 16) {
> > -		if (SUPPORT_AUTO_DELINK(chip))
> > +	if (CHECK_PID(chip, 0x0138) || CHECK_PID(chip, 0x0158) ||
> > +	    CHECK_PID(chip, 0x0159)) {
> > +		if (CHECK_FW_VER(chip, 0x5888) || CHECK_FW_VER(chip, 0x5889) ||
> > +				CHECK_FW_VER(chip, 0x5901))
> >  			SET_AUTO_DELINK(chip);
> > +		if (STATUS_LEN(chip) == 16) {
> > +			if (SUPPORT_AUTO_DELINK(chip))
> > +				SET_AUTO_DELINK(chip);
> > +		}
> >  	}
> >  #ifdef CONFIG_REALTEK_AUTOPM
> >  	if (ss_en)
> 
> For both patches in this series:
> 
> Acked-by: Alan Stern <stern@rowland.harvard.edu>
> 
> Shouldn't this patch go into the -stable kernels as well?

Yes, I can do that.

thanks,

greg k-h
diff mbox series

Patch

diff --git a/drivers/usb/storage/realtek_cr.c b/drivers/usb/storage/realtek_cr.c
index beaffac805af..1d9ce9cbc831 100644
--- a/drivers/usb/storage/realtek_cr.c
+++ b/drivers/usb/storage/realtek_cr.c
@@ -996,12 +996,15 @@  static int init_realtek_cr(struct us_data *us)
 			goto INIT_FAIL;
 	}
 
-	if (CHECK_FW_VER(chip, 0x5888) || CHECK_FW_VER(chip, 0x5889) ||
-	    CHECK_FW_VER(chip, 0x5901))
-		SET_AUTO_DELINK(chip);
-	if (STATUS_LEN(chip) == 16) {
-		if (SUPPORT_AUTO_DELINK(chip))
+	if (CHECK_PID(chip, 0x0138) || CHECK_PID(chip, 0x0158) ||
+	    CHECK_PID(chip, 0x0159)) {
+		if (CHECK_FW_VER(chip, 0x5888) || CHECK_FW_VER(chip, 0x5889) ||
+				CHECK_FW_VER(chip, 0x5901))
 			SET_AUTO_DELINK(chip);
+		if (STATUS_LEN(chip) == 16) {
+			if (SUPPORT_AUTO_DELINK(chip))
+				SET_AUTO_DELINK(chip);
+		}
 	}
 #ifdef CONFIG_REALTEK_AUTOPM
 	if (ss_en)