Message ID | 20220112094143.628610-1-waynec@nvidia.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 825911492eb15bf8bb7fb94bc0c0421fe7a6327d |
Headers | show |
Series | [v5,1/1] ucsi_ccg: Check DEV_INT bit only when starting CCG4 | expand |
On Wed, Jan 12, 2022 at 05:41:43PM +0800, Wayne Chang wrote: > From: Sing-Han Chen <singhanc@nvidia.com> > > CCGx clears Bit 0:Device Interrupt in the INTR_REG > if CCGx is reset successfully. However, there might > be a chance that other bits in INTR_REG are not > cleared due to internal data queued in PPM. This case > misleads the driver that CCGx reset failed. > > The commit checks bit 0 in INTR_REG and ignores other > bits. The ucsi driver would reset PPM later. > > Fixes: 247c554a14aa ("usb: typec: ucsi: add support for Cypress CCGx") > Cc: stable@vger.kernel.org > Signed-off-by: Sing-Han Chen <singhanc@nvidia.com> > Signed-off-by: Wayne Chang <waynec@nvidia.com> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > V4 -> V5: Added Cc tag and revised the commit messages > V3 -> V4: Updated the Fixes tag > V2 -> V3: Added the Fixes tag > V1 -> V2: Fixed the name of Sign-off-by > drivers/usb/typec/ucsi/ucsi_ccg.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/usb/typec/ucsi/ucsi_ccg.c b/drivers/usb/typec/ucsi/ucsi_ccg.c > index bff96d64dddf..6db7c8ddd51c 100644 > --- a/drivers/usb/typec/ucsi/ucsi_ccg.c > +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c > @@ -325,7 +325,7 @@ static int ucsi_ccg_init(struct ucsi_ccg *uc) > if (status < 0) > return status; > > - if (!data) > + if (!(data & DEV_INT)) > return 0; > > status = ccg_write(uc, CCGX_RAB_INTR_REG, &data, sizeof(data)); > -- > 2.25.1 thanks,
diff --git a/drivers/usb/typec/ucsi/ucsi_ccg.c b/drivers/usb/typec/ucsi/ucsi_ccg.c index bff96d64dddf..6db7c8ddd51c 100644 --- a/drivers/usb/typec/ucsi/ucsi_ccg.c +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c @@ -325,7 +325,7 @@ static int ucsi_ccg_init(struct ucsi_ccg *uc) if (status < 0) return status; - if (!data) + if (!(data & DEV_INT)) return 0; status = ccg_write(uc, CCGX_RAB_INTR_REG, &data, sizeof(data));