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

Commit 5c9ae5a8 authored by Ajay Gupta's avatar Ajay Gupta Committed by Greg Kroah-Hartman
Browse files

usb: typec: ucsi: ccg: add firmware flashing support



CCGx has two copies of the firmware in addition to the bootloader.
If the device is running FW1, FW2 can be updated with the new version.
Dual firmware mode allows the CCG device to stay in a PD contract and
support USB PD and Type-C functionality while a firmware update is in
progress.

First we read the currently flashed firmware version of both
primary and secondary firmware and then compare it with
version of firmware file to determine if flashing is required.

Command framework is added to support sending commands to CCGx
controller. We wait for response after sending the command and then
read the response from RAB_RESPONSE register.

Below commands are supported,
	- ENTER_FLASHING
	- RESET
	- PDPORT_ENABLE
	- JUMP_TO_BOOT
	- FLASH_ROW_RW
	- VALIDATE_FW

Command specific mutex lock is also added to sync between driver
and user threads.

PD port number information is added which is required while sending
PD_PORT_ENABLE command

Signed-off-by: default avatarAjay Gupta <ajayg@nvidia.com>
[ heikki: Added ABI documentation. ]
Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5fd958a4
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
What:		/sys/bus/i2c/drivers/ucsi_ccg/.../do_flash
Date:		May 2019
Contact:	Ajay Gupta <ajayg@nvidia.com>
Description:
		Tell the driver for Cypress CCGx Type-C controller to attempt
		firmware upgrade by writing [Yy1] to the file.
+814 −13

File changed.

Preview size limit exceeded, changes collapsed.