2019-08-27 17:36:14

by Kai-Heng Feng

[permalink] [raw]
Subject: [PATCH v3 1/2] USB: storage: ums-realtek: Update module parameter description for auto_delink_en

The option named "auto_delink_en" is a bit misleading, as setting it to
false doesn't really disable auto-delink but let auto-delink be firmware
controlled.

Update the description to reflect the real usage of this parameter.

Signed-off-by: Kai-Heng Feng <[email protected]>
---
v2:
- Only update module parameter description.

drivers/usb/storage/realtek_cr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/storage/realtek_cr.c b/drivers/usb/storage/realtek_cr.c
index cc794e25a0b6..beaffac805af 100644
--- a/drivers/usb/storage/realtek_cr.c
+++ b/drivers/usb/storage/realtek_cr.c
@@ -38,7 +38,7 @@ MODULE_LICENSE("GPL");

static int auto_delink_en = 1;
module_param(auto_delink_en, int, S_IRUGO | S_IWUSR);
-MODULE_PARM_DESC(auto_delink_en, "enable auto delink");
+MODULE_PARM_DESC(auto_delink_en, "auto delink mode (0=firmware, 1=software [default])");

#ifdef CONFIG_REALTEK_AUTOPM
static int ss_en = 1;
--
2.17.1


2019-08-27 17:36:33

by Kai-Heng Feng

[permalink] [raw]
Subject: [PATCH v3 2/2] USB: storage: ums-realtek: Whitelist auto-delink support

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 <[email protected]>
---
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)
--
2.17.1

2019-08-27 18:58:16

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH v3 2/2] USB: storage: ums-realtek: Whitelist auto-delink support

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 <[email protected]>
> ---
> 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 <[email protected]>

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

Alan Stern

2019-08-27 19:24:53

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v3 2/2] USB: storage: ums-realtek: Whitelist auto-delink support

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 <[email protected]>
> > ---
> > 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 <[email protected]>
>
> Shouldn't this patch go into the -stable kernels as well?

Yes, I can do that.

thanks,

greg k-h