Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 77b1d3fa authored by Hema HK's avatar Hema HK Committed by Felipe Balbi
Browse files

mfd: TWL6030: USBOTG VBUS event generation on



With TWL6030-usb, VBUS SESS_VLD and SESS_END events are not generated
as expected. When these interrupts are enabled, charger VBUS detection
interrupt does not get generated. So USBOTG has to be dependent on charger
VBUS interrupts.
So added one bit for USBOTG and changed the handler to call the
USBOTG handler whenever there is a charger VBUS interrpt.

VBUS SESS_VLD and SESS_END event generation issue is under debug with
HW team. This fix might not be required once after fixing the issue.

Signed-off-by: default avatarBalaji TK <balajitk@ti.com>
Signed-off-by: default avatarHema HK <hemahk@ti.com>
Cc: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 4bc36fd3
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ static int twl6030_interrupt_mapping[24] = {
	USBOTG_INTR_OFFSET,	/* Bit 16	ID_WKUP			*/
	USBOTG_INTR_OFFSET,	/* Bit 17	VBUS_WKUP		*/
	USBOTG_INTR_OFFSET,	/* Bit 18	ID			*/
	USBOTG_INTR_OFFSET,	/* Bit 19	VBUS			*/
	USB_PRES_INTR_OFFSET,	/* Bit 19	VBUS			*/
	CHARGER_INTR_OFFSET,	/* Bit 20	CHRG_CTRL		*/
	CHARGER_INTR_OFFSET,	/* Bit 21	EXT_CHRG		*/
	CHARGER_INTR_OFFSET,	/* Bit 22	INT_CHRG		*/
@@ -128,6 +128,13 @@ static int twl6030_irq_thread(void *data)

		sts.bytes[3] = 0; /* Only 24 bits are valid*/

		/*
		 * Since VBUS status bit is not reliable for VBUS disconnect
		 * use CHARGER VBUS detection status bit instead.
		 */
		if (sts.bytes[2] & 0x10)
			sts.bytes[2] |= 0x08;

		for (i = 0; sts.int_sts; sts.int_sts >>= 1, i++) {
			local_irq_disable();
			if (sts.int_sts & 0x1) {