• Ajay Gupta's avatar
    usb: typec: ucsi: ccg: add firmware flashing support · 5c9ae5a8
    Ajay Gupta authored
    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>
    5c9ae5a8
sysfs-driver-ucsi-ccg 231 Bytes