linux/drivers/usb/typec
Badhri Jagan Sridharan 3ed8e1c2ac usb: typec: tcpm: Migrate workqueue to RT priority for processing events
"tReceiverResponse 15 ms Section 6.6.2
The receiver of a Message requiring a response Shall respond
within tReceiverResponse in order to ensure that the
sender’s SenderResponseTimer does not expire."

When the cpu complex is busy running other lower priority
work items, TCPM's work queue sometimes does not get scheduled
on time to meet the above requirement from the spec.
Moving to kthread_work apis to run with real time priority.

Further, as observed in 1ff688209e, moving to hrtimers to
overcome scheduling latency while scheduling the delayed work.

TCPM has three work streams:
1. tcpm_state_machine
2. vdm_state_machine
3. event_work

tcpm_state_machine and vdm_state_machine both schedule work in
future i.e. delayed. Hence each of them have a corresponding
hrtimer, tcpm_state_machine_timer & vdm_state_machine_timer.

When work is queued right away kthread_queue_work is used.
Else, the relevant timer is programmed and made to queue
the kthread_work upon timer expiry.

kthread_create_worker only creates one kthread worker thread,
hence single threadedness of workqueue is retained.

Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20200818192758.2562908-1-badhri@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-08-28 09:50:29 +02:00
..
altmodes usb: typec: altmodes: displayport: Supply missing displayport.h include file 2020-07-09 16:46:59 +02:00
mux usb: typec: intel_pmc_mux: Avoid connect request on disconnect 2020-07-21 13:38:21 +02:00
tcpm usb: typec: tcpm: Migrate workqueue to RT priority for processing events 2020-08-28 09:50:29 +02:00
ucsi usb: typec: Replace HTTP links with HTTPS ones 2020-07-15 16:33:50 +02:00
bus.c usb: typec: altmode: Fix typec_altmode_get_partner sometimes returning an invalid pointer 2020-04-22 19:23:19 +02:00
bus.h usb: typec: altmode: Remove the notification chain 2020-02-12 10:51:21 -08:00
class.c usb: typec: Comment correction for typec_partner_register_altmode 2020-07-21 13:38:21 +02:00
hd3ss3220.c usb: typec: hd3ss3220: Give the connector fwnode to the port device 2019-11-04 16:03:36 +01:00
Kconfig usb: typec: Ensure USB_ROLE_SWITCH is set as a dependency for tps6598x 2020-05-21 09:36:42 +02:00
Makefile usb: typec: driver for TI HD3SS3220 USB Type-C DRP port controller 2019-10-04 14:18:48 +02:00
mux.c usb: typec: mux: Allow the mux handles to be requested with fwnode 2020-03-04 11:12:49 +01:00
tps6598x.c usb: typec: Replace HTTP links with HTTPS ones 2020-07-15 16:33:50 +02:00