From 97d51db933bf05ed79d5c758640cf1356aef2933 Mon Sep 17 00:00:00 2001 From: Linyu Yuan Date: Wed, 23 Dec 2020 15:45:54 +0800 Subject: [PATCH] usb: misc: nb7vpq904m: fix suspend/resume issue when suspend happen with empty OTG cable, then insert USB 3 thumb drive, after resume, thumb drive work in USB 2 mode. currently in suspend function only disable redriver, but no operation in resume function. fix it by enable redriver during resume. Change-Id: I57535dd24317cce77e40eb8ca30a2203af6776b0 Signed-off-by: Linyu Yuan --- drivers/usb/misc/ssusb-redriver-nb7vpq904m.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/usb/misc/ssusb-redriver-nb7vpq904m.c b/drivers/usb/misc/ssusb-redriver-nb7vpq904m.c index 3849f2dab9ee..a9b284ba6abb 100644 --- a/drivers/usb/misc/ssusb-redriver-nb7vpq904m.c +++ b/drivers/usb/misc/ssusb-redriver-nb7vpq904m.c @@ -1022,8 +1022,8 @@ static int __maybe_unused redriver_i2c_suspend(struct device *dev) redriver->op_mode == OP_MODE_DEFAULT) return 0; - redriver->op_mode = OP_MODE_NONE; - ssusb_redriver_gen_dev_set(redriver); + redriver_i2c_reg_set(redriver, GEN_DEV_SET_REG, + redriver->gen_dev_val & ~CHIP_EN); return 0; } @@ -1036,6 +1036,15 @@ static int __maybe_unused redriver_i2c_resume(struct device *dev) dev_dbg(redriver->dev, "%s: SS USB redriver resume.\n", __func__); + /* no suspend happen in following mode */ + if (redriver->op_mode == OP_MODE_DP || + redriver->op_mode == OP_MODE_NONE || + redriver->op_mode == OP_MODE_DEFAULT) + return 0; + + redriver_i2c_reg_set(redriver, GEN_DEV_SET_REG, + redriver->gen_dev_val); + return 0; }