Nick: heijligen E-mail: none Board: unknown Contents: // programmer.h struct ch3_ { char *device, int spispped, }; int ch3_parse_pparams(struct *ch3_, char **param_str) { // param_str <-> ch3_pparams // -> ch3_ } const struct programmer_entry programmer_ch341a_spi = { .name = "ch341a_spi", .type = USB, .devs.dev = devs_ch341a_spi, .init = ch341a_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, .delay = ch341a_spi_delay, .pparam_parser = ch...; .pparams = {} }; //programmer.h union programmer_settings { ch3_, dedi_ }; /* flashrom.c:programmer_init("ch341a_spi", "device=/dev/usb0,spispeed=42") union programmer_settings -> $1:programmer_entry->pparam_parser(&ch3_, "device=/dev/usb0,spispeed=42") => ch3_ -> $1:programmer_entry->init(ch3_)