Lines Matching refs:data
64 static struct dfu_entity *stm32prog_get_entity(struct stm32prog_data *data) in stm32prog_get_entity() argument
68 if (!data->cur_part) in stm32prog_get_entity()
69 if (data->phase == PHASE_FLASHLAYOUT) in stm32prog_get_entity()
74 alt_id = data->cur_part->alt_id; in stm32prog_get_entity()
79 static int stm32prog_write(struct stm32prog_data *data, u8 *buffer, in stm32prog_write() argument
85 dfu_entity = stm32prog_get_entity(data); in stm32prog_write()
92 data->dfu_seq); in stm32prog_write()
96 ret, data->dfu_seq); in stm32prog_write()
98 data->dfu_seq++; in stm32prog_write()
100 data->dfu_seq &= 0xffff; in stm32prog_write()
102 data->dfu_seq = 0; /* flush done */ in stm32prog_write()
107 static int stm32prog_read(struct stm32prog_data *data, u8 phase, u32 offset, in stm32prog_read() argument
115 if (data->dfu_seq) { in stm32prog_read()
117 data->phase, data->dfu_seq); in stm32prog_read()
124 if (data->read_phase <= PHASE_LAST_USER && in stm32prog_read()
125 phase != data->read_phase) { in stm32prog_read()
127 dfu_entity = dfu_get_entity(data->read_phase - 1); in stm32prog_read()
134 for (i = 0; i < data->part_nb; i++) { in stm32prog_read()
135 part = &data->part_array[i]; in stm32prog_read()
146 (data->read_phase != phase || data->offset != offset)) in stm32prog_read()
161 data->offset = offset; in stm32prog_read()
162 data->read_phase = phase; in stm32prog_read()
176 data->offset = 0; in stm32prog_read()
177 data->read_phase = PHASE_END; in stm32prog_read()
180 data->offset += size; in stm32prog_read()
187 int stm32prog_serial_init(struct stm32prog_data *data, int link_dev) in stm32prog_serial_init() argument
222 data->buffer = memalign(CONFIG_SYS_CACHELINE_SIZE, in stm32prog_serial_init()
296 static u8 stm32prog_header(struct stm32prog_data *data) in stm32prog_header() argument
303 dfu_entity = stm32prog_get_entity(data); in stm32prog_header()
312 ret = stm32prog_header_check(data->header_data, in stm32prog_header()
313 &data->header); in stm32prog_header()
318 data->header.image_length = size; in stm32prog_header()
322 if (data->phase < PHASE_FIRST_USER) in stm32prog_header()
330 ret = stm32prog_write(data, in stm32prog_header()
331 (u8 *)data->header_data, in stm32prog_header()
340 free(data->header_data); in stm32prog_header()
341 data->header_data = NULL; in stm32prog_header()
346 static u8 stm32prog_start(struct stm32prog_data *data, u32 address) in stm32prog_start() argument
353 return stm32prog_otp_start(data); in stm32prog_start()
356 return stm32prog_pmic_start(data); in stm32prog_start()
359 data->cur_part = NULL; in stm32prog_start()
360 data->dfu_seq = 0; in stm32prog_start()
361 data->phase = address; in stm32prog_start()
364 if (address != data->phase) { in stm32prog_start()
366 (u8)address, (u8)data->phase); in stm32prog_start()
371 if (address == DEFAULT_ADDRESS || address == data->phase) { in stm32prog_start()
372 switch (data->phase) { in stm32prog_start()
376 data->cur_part = NULL; in stm32prog_start()
377 data->phase = PHASE_DO_RESET; in stm32prog_start()
380 dfu_entity = stm32prog_get_entity(data); in stm32prog_start()
384 ret = dfu_flush(dfu_entity, NULL, 0, data->dfu_seq); in stm32prog_start()
389 data->dfu_seq = 0; in stm32prog_start()
391 printf("\n received length = 0x%x\n", data->cursor); in stm32prog_start()
392 if (data->header.present) { in stm32prog_start()
393 if (data->cursor != in stm32prog_start()
394 (data->header.image_length + BL_HEADER_SIZE)) { in stm32prog_start()
396 data->cursor, in stm32prog_start()
397 data->header.image_length + in stm32prog_start()
401 if (data->header.image_checksum != data->checksum) { in stm32prog_start()
403 data->checksum, in stm32prog_start()
404 data->header.image_checksum); in stm32prog_start()
407 printf("\n checksum OK (0x%x)\n", data->checksum); in stm32prog_start()
411 if (data->phase == PHASE_FLASHLAYOUT) in stm32prog_start()
412 stm32prog_dfu_init(data); in stm32prog_start()
434 u8 data; in get_address() local
436 data = stm32prog_serial_getc(); in get_address()
437 *tmp_xor ^= data; in get_address()
438 address |= ((u32)data) << 24; in get_address()
440 data = stm32prog_serial_getc(); in get_address()
441 address |= ((u32)data) << 16; in get_address()
442 *tmp_xor ^= data; in get_address()
444 data = stm32prog_serial_getc(); in get_address()
445 address |= ((u32)data) << 8; in get_address()
446 *tmp_xor ^= data; in get_address()
448 data = stm32prog_serial_getc(); in get_address()
449 address |= ((u32)data); in get_address()
450 *tmp_xor ^= data; in get_address()
468 static void get_cmd_command(struct stm32prog_data *data) in get_cmd_command() argument
486 static void get_version_command(struct stm32prog_data *data) in get_version_command() argument
497 static void get_id_command(struct stm32prog_data *data) in get_id_command() argument
511 static void get_phase_command(struct stm32prog_data *data) in get_phase_command() argument
516 int phase = data->phase; in get_phase_command()
519 err_msg = stm32prog_get_error(data); in get_phase_command()
538 stm32prog_do_reset(data); in get_phase_command()
546 static void read_memory_command(struct stm32prog_data *data) in read_memory_command() argument
591 static void start_command(struct stm32prog_data *data) in start_command() argument
607 ret = stm32prog_start(data, in start_command()
623 static void download_command(struct stm32prog_data *data) in download_command() argument
631 struct image_header_s *image_header = &data->header; in download_command()
632 u32 cursor = data->cursor; in download_command()
671 data->packet_number = 0; in download_command()
672 if (data->header_data) in download_command()
673 memset(data->header_data, 0, BL_HEADER_SIZE); in download_command()
675 data->header_data = calloc(1, BL_HEADER_SIZE); in download_command()
677 data->cursor = 0; in download_command()
678 data->checksum = 0; in download_command()
681 data->packet_number++; in download_command()
687 if (packet_number != data->packet_number) { in download_command()
688 data->packet_number--; in download_command()
713 error = stm32prog_serial_get_buffer(data->buffer, &counter); in download_command()
727 data->packet_number--; in download_command()
733 ramaddress = data->buffer; in download_command()
745 data->packet_number--; in download_command()
751 data->cursor += codesize; in download_command()
754 size = data->cursor - cursor; in download_command()
756 if (stm32prog_otp_write(data, cursor, in download_command()
757 data->buffer, &size)) in download_command()
763 size = data->cursor - cursor; in download_command()
765 if (stm32prog_pmic_write(data, cursor, in download_command()
766 data->buffer, &size)) in download_command()
773 if (data->cursor >= BL_HEADER_SIZE) in download_command()
776 size = data->cursor - cursor; in download_command()
777 memcpy((void *)((u32)(data->header_data) + cursor), in download_command()
778 data->buffer, size); in download_command()
783 if (stm32prog_header(data)) { in download_command()
793 if (data->cursor <= BL_HEADER_SIZE) in download_command()
797 data->checksum += data->buffer[i]; in download_command()
799 if (data->cursor > in download_command()
807 ret = stm32prog_write(data, in download_command()
808 &data->buffer[size], in download_command()
812 ret = stm32prog_write(data, in download_command()
813 data->buffer, in download_command()
830 static void read_partition_command(struct stm32prog_data *data) in read_partition_command() argument
868 if (!stm32prog_otp_read(data, offset, buffer, &size)) in read_partition_command()
873 if (!stm32prog_pmic_read(data, offset, buffer, &size)) in read_partition_command()
877 res = stm32prog_read(data, part_id, offset, in read_partition_command()
908 bool stm32prog_serial_loop(struct stm32prog_data *data) in stm32prog_serial_loop() argument
913 int phase = data->phase; in stm32prog_serial_loop()
934 phase = data->phase; in stm32prog_serial_loop()
965 cmd_func[counter](data); in stm32prog_serial_loop()