STRUCT GB_BEAGLEPLAY(9)
π struct gb_beagleplay(9) β BeaglePlay Greybus driver
okay bestie, welcome to the struct gb_beagleplay(9) glow-up page β¨ this is from the Kernel API Manual, and it's literally the main character struct of the BeaglePlay Greybus driver. congrats, you're about to be obsessed with a kernel struct π
π¦ SYNOPSIS
here's the whole vibe, no edits, fr fr:
struct gb_beagleplay {
struct serdev_device *sd;
struct gb_host_device *gb_hd;
struct work_struct tx_work;
spinlock_t tx_producer_lock;
spinlock_t tx_consumer_lock;
struct circ_buf tx_circ_buf;
u16 tx_crc;
u16 rx_buffer_len;
bool rx_in_esc;
u8 rx_buffer[MAX_RX_HDLC];
struct fw_upload *fwl;
struct gpio_desc *bootloader_backdoor_gpio;
struct gpio_desc *rst_gpio;
bool flashing_mode;
struct completion fwl_ack_com;
u8 fwl_ack;
struct completion fwl_cmd_response_com;
u32 fwl_cmd_response;
u32 fwl_crc32;
bool fwl_reset_addr;
};
π Members
grab a snack π, we're doing a full tour:
sdβ the underlying serdev device. the little base camp this whole thing sits on ποΈgb_hdβ the greybus host device. yes queen πtx_workβ the hdlc transmit work. the lil worker bee πtx_producer_lockβ the hdlc transmit data producer lock. it gets acquired when you're appending data to the buffer, so like, nobody stomps on your append game πtx_consumer_lockβ the hdlc transmit data consumer lock. acquired when sending data over uart. two locks, two jobs, no chaos π«Άtx_circ_bufβ the hdlc transmit circular buffer. it goes round and round πtx_crcβ the hdlc transmit crc-ccitt fcs. checksum era β¨rx_buffer_lenβ length of the receive buffer that's been filled. how full is the cup π₯€rx_in_escβ hdlc rx flag, indicates an ESC frame. just a lil flag π©rx_bufferβ the hdlc frame receive buffer. size isMAX_RX_HDLC, iykykfwlβ the underlying firmware upload device. firmware girlie πΎbootloader_backdoor_gpioβ cc1352p7 boot gpio. the backdoor πrst_gpioβ cc1352p7 reset gpio. press it, reset it πflashing_modeβ flag that says flashing is currently in progress. pls don't interrupt her mid-flash πfwl_ack_comβ completion used to signal an Ack/Nack. the "did it work" notification β¨fwl_ackβ the Ack/Nack byte that was received. one single byte carrying so much emotional weight πfwl_cmd_response_comβ completion used to signal a bootloader command response. ping! π©fwl_cmd_responseβ the bootloader command response data.fwl_crc32β the crc32 of the firmware you're about to flash. integrity queen π₯fwl_reset_addrβ flag that indicates whether we need to sendCOMMAND_DOWNLOADagain. lowkey important π¨
πΈ SEE ALSO
go read these next, bestie, they're all in the kernel file ./drivers/greybus/gb-beagleplay.c:
struct hdlc_payload(9)struct hdlc_greybus_frame(9)enum cc1352_bootloader_cmd(9)enum cc1352_bootloader_status(9)struct cc1352_bootloader_packet(9)struct cc1352_bootloader_download_cmd_data(9)struct cc1352_bootloader_crc32_cmd_data(9)hdlc_write(9)hdlc_append(9)hdlc_encoded_length(9)hdlc_tx_frames(9)csum8(9)cc1352_bootloader_pkt_rx(9)gb_message_send(9)cc1352_bootloader_empty_pkt(9)
and that's the whole page, bestie π§ you ate that ngl π
this one lives at ./drivers/greybus and the date on it is October 2026 β so like, keep that in mind when you're citing her, mwah π«Ά
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms