linux/drivers/greybus
Ayush Singh 0cf7befa3e greybus: gb-beagleplay: Add firmware upload API
Register with firmware upload API to allow updating firmware on cc1352p7
without resorting to overlay for using the userspace flasher.

Communication with the bootloader can be moved out of gb-beagleplay
driver if required, but I am keeping it here since there are no
immediate plans to use the on-board cc1352p7 for anything other than
greybus (BeagleConnect Technology). Additionally, there do not seem to
any other devices using cc1352p7 or it's cousins as a co-processor.

Boot and Reset GPIOs are used to enable cc1352p7 bootloader backdoor for
flashing. The delays while starting bootloader are taken from the
userspace flasher since the technical specification does not provide
sufficient information regarding it.

Flashing is skipped in case we are trying to flash the same
image as the one that is currently present. This is determined by CRC32
calculation of the supplied firmware and Flash data.

We also do a CRC32 check after flashing to ensure that the firmware was
flashed properly.

Firmware size should be 704 KB.

Link: https://www.ti.com/lit/ug/swcu192/swcu192.pdf Ti CC1352p7 Tecnical Specification
Link: https://openbeagle.org/beagleconnect/cc1352-flasher Userspace
Flasher

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
Link: https://lore.kernel.org/r/20240903-beagleplay_fw_upgrade-v4-3-526fc62204a7@beagleboard.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-09-12 09:04:09 +02:00
..
arpc.h greybus: Replace zero-length array with flexible-array 2020-05-13 13:59:13 +02:00
bundle.c greybus: constify the struct device_type usage 2024-03-06 14:13:10 +00:00
connection.c greybus: Use alloc_ordered_workqueue() to create ordered workqueues 2023-05-08 13:52:27 -10:00
control.c greybus: constify the struct device_type usage 2024-03-06 14:13:10 +00:00
core.c Driver core changes for 6.11-rc1 2024-07-25 10:42:22 -07:00
debugfs.c
es2.c greybus: add missing MODULE_DESCRIPTION() macros 2024-07-03 16:40:35 +02:00
gb-beagleplay.c greybus: gb-beagleplay: Add firmware upload API 2024-09-12 09:04:09 +02:00
greybus_trace.h greybus: remove h from printk format specifier 2021-01-05 15:18:23 +01:00
hd.c greybus: Remove usage of the deprecated ida_simple_xx() API 2024-03-07 21:41:38 +00:00
interface.c greybus: Fix use-after-free bug in gb_interface_release due to race condition. 2024-05-04 18:59:41 +02:00
Kconfig greybus: gb-beagleplay: Add firmware upload API 2024-09-12 09:04:09 +02:00
Makefile greybus: Add BeaglePlay Linux Driver 2023-10-27 13:19:04 +02:00
manifest.c
module.c greybus: constify the struct device_type usage 2024-03-06 14:13:10 +00:00
operation.c
svc_watchdog.c
svc.c greybus: constify the struct device_type usage 2024-03-06 14:13:10 +00:00