Skip to contentSkip to conversation

ucsi_ccg: Check DEV_INT bit only when starting CCG4

PATCH In review Wayne Chang 2 participants 2 messages Jan 12, 2022

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH v5 1/1 ucsi_ccg: Check DEV_INT bit only when starting CCG4

From: Sing-Han Chen <[email protected]>

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")

---
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(-)
drivers/usb/typec/ucsi/ucsi_ccg.c +1 -1
index bff96d64dddf..6db7c8ddd51c 100644
@@ -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));
Signature · 1 line
2.25.1
maintainer Reviewed-by on v5 1/1
#1 lore raw
Quoted 8 lines · Wayne Chang

From: Sing-Han Chen <[email protected]>

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.

Quoted 7 lines

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")
Quoted 23 lines

---
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(-)
drivers/usb/typec/ucsi/ucsi_ccg.c +1 -1
index bff96d64dddf..6db7c8ddd51c 100644
@@ -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));
Signature · 1 line
2.25.1

thanks,

Signature · 1 line
heikki