mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2026-09-10 16:49:36 +00:00
Update hackrf submodule (#3174)
* updated submodule * usb_serial: populate usb_device before usb_run. Upstream now leaves the global usb_device zero-initialized and expects hackrf_usb.c to memcpy a per-board const into it. We don't link hackrf_usb.c, so do the memcpy here. Also flip control_in to enable_zlp=true to match the new endpoint API. * baseband: derive IS_* board defines from BOARD. Upstream moved platform IS_* macros from platform_detect.h to cmake. Set them per BOARD here since we don't include platform-detect.cmake. Drop the duplicate clkin.c entry. * sd_over_usb: drop duplicate driver objects, fix setup callback. Upstream now defines i2c0/i2c1, spi_bus_ssp0/1, sgpio_config and rf_path in the common driver files, so stop redefining them here and patch the runtime fields in pin_setup() instead. Update si5351c_reset_pll() call to the two-arg form. Replace the no-op transceiver_usb_setup_complete stub with one that delegates to usb_setup_complete. * sd_over_usb: populate usb_device before usb_run. Same fix as the application side: memcpy a const template into usb_device before usb_device_init/usb_run, otherwise the descriptor pointer is NULL. Also pass enable_zlp=true on control_in to match the new endpoint API. * fix unicode in comment * remove lz4 bufs reservation in M0
This commit is contained in:
@@ -20,9 +20,31 @@
|
||||
*/
|
||||
|
||||
#include "usb_serial_cdc.h"
|
||||
#include "usb_serial_descriptor.h"
|
||||
#include "usb_serial_endpoints.h"
|
||||
#include "usb_serial_event.hpp"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
/* Defined in hackrf/firmware/hackrf_usb/usb_device.c. After upstream commit
|
||||
* 85dfacf6 ("Universalize: firmware/hackrf_usb"), the global `usb_device` is
|
||||
* left zero-initialized and is populated at runtime from per-board
|
||||
* `usb_device_*` constants inside hackrf_usb.c. Mayhem does not link
|
||||
* hackrf_usb.c, so we must populate `usb_device` ourselves before usb_run().
|
||||
* The descriptor fields are const-qualified, so we follow the upstream
|
||||
* pattern of memcpy from a const template. */
|
||||
extern usb_configuration_t* usb_configurations[];
|
||||
|
||||
static const usb_device_t usb_device_mayhem = {
|
||||
.descriptor = usb_descriptor_device,
|
||||
.descriptor_strings = usb_descriptor_strings,
|
||||
.qualifier_descriptor = usb_descriptor_device_qualifier,
|
||||
.configurations = &usb_configurations,
|
||||
.configuration = 0,
|
||||
.wcid_string_descriptor = wcid_string_descriptor,
|
||||
.wcid_feature_descriptor = wcid_feature_descriptor,
|
||||
};
|
||||
|
||||
uint32_t EVT_MASK_USB = EVENT_MASK(8);
|
||||
|
||||
extern void usb0_isr(void);
|
||||
@@ -85,6 +107,8 @@ void usb_configuration_changed(usb_device_t* const device) {
|
||||
}
|
||||
|
||||
void setup_usb_serial_controller(void) {
|
||||
memcpy(&usb_device, &usb_device_mayhem, sizeof(usb_device_mayhem));
|
||||
|
||||
usb_set_configuration_changed_cb(usb_configuration_changed);
|
||||
usb_peripheral_reset();
|
||||
|
||||
@@ -97,7 +121,10 @@ void setup_usb_serial_controller(void) {
|
||||
usb_queue_init(&usb_endpoint_bulk_in_queue);
|
||||
|
||||
usb_endpoint_init(&usb_endpoint_control_out, false);
|
||||
usb_endpoint_init(&usb_endpoint_control_in, false);
|
||||
/* Control IN needs ZLP for descriptor reads whose length is a multiple of
|
||||
* the max packet size (otherwise the host hangs waiting for the transfer
|
||||
* to terminate). Matches upstream hackrf_usb.c after commit db73ecbf. */
|
||||
usb_endpoint_init(&usb_endpoint_control_in, true);
|
||||
|
||||
usb_run(&usb_device);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user