Lines Matching refs:dfu
23 static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu, in mmc_block_op() argument
30 mmc = find_mmc_device(dfu->data.mmc.dev_num); in mmc_block_op()
32 pr_err("Device MMC %d - not found!", dfu->data.mmc.dev_num); in mmc_block_op()
40 *len = ALIGN(*len, dfu->data.mmc.lba_blk_size); in mmc_block_op()
42 blk_start = dfu->data.mmc.lba_start + in mmc_block_op()
43 (u32)lldiv(offset, dfu->data.mmc.lba_blk_size); in mmc_block_op()
44 blk_count = *len / dfu->data.mmc.lba_blk_size; in mmc_block_op()
46 dfu->data.mmc.lba_start + dfu->data.mmc.lba_size) { in mmc_block_op()
51 if (dfu->data.mmc.hw_partition >= 0) { in mmc_block_op()
54 dfu->data.mmc.dev_num, in mmc_block_op()
55 dfu->data.mmc.hw_partition); in mmc_block_op()
62 dfu->data.mmc.dev_num, blk_start, blk_count, buf); in mmc_block_op()
77 if (dfu->data.mmc.hw_partition >= 0) in mmc_block_op()
79 dfu->data.mmc.dev_num, in mmc_block_op()
84 if (dfu->data.mmc.hw_partition >= 0) { in mmc_block_op()
86 dfu->data.mmc.dev_num, in mmc_block_op()
95 static int mmc_file_buffer(struct dfu_entity *dfu, void *buf, long *len) in mmc_file_buffer() argument
109 static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu, in mmc_file_op() argument
117 switch (dfu->layout) { in mmc_file_op()
126 dfu_get_layout(dfu->layout)); in mmc_file_op()
145 dfu->data.mmc.dev, dfu->data.mmc.part); in mmc_file_op()
150 sprintf(cmd_buf + strlen(cmd_buf), " %s", dfu->name); in mmc_file_op()
175 int dfu_write_medium_mmc(struct dfu_entity *dfu, in dfu_write_medium_mmc() argument
180 switch (dfu->layout) { in dfu_write_medium_mmc()
182 ret = mmc_block_op(DFU_OP_WRITE, dfu, offset, buf, len); in dfu_write_medium_mmc()
186 ret = mmc_file_buffer(dfu, buf, len); in dfu_write_medium_mmc()
190 dfu_get_layout(dfu->layout)); in dfu_write_medium_mmc()
196 int dfu_flush_medium_mmc(struct dfu_entity *dfu) in dfu_flush_medium_mmc() argument
200 if (dfu->layout != DFU_RAW_ADDR) { in dfu_flush_medium_mmc()
202 ret = mmc_file_op(DFU_OP_WRITE, dfu, dfu_file_buf, in dfu_flush_medium_mmc()
212 int dfu_get_medium_size_mmc(struct dfu_entity *dfu, u64 *size) in dfu_get_medium_size_mmc() argument
216 switch (dfu->layout) { in dfu_get_medium_size_mmc()
218 *size = dfu->data.mmc.lba_size * dfu->data.mmc.lba_blk_size; in dfu_get_medium_size_mmc()
223 ret = mmc_file_op(DFU_OP_SIZE, dfu, NULL, size); in dfu_get_medium_size_mmc()
231 dfu_get_layout(dfu->layout)); in dfu_get_medium_size_mmc()
236 static int mmc_file_unbuffer(struct dfu_entity *dfu, u64 offset, void *buf, in mmc_file_unbuffer() argument
243 ret = mmc_file_op(DFU_OP_READ, dfu, dfu_file_buf, &file_len); in mmc_file_unbuffer()
257 int dfu_read_medium_mmc(struct dfu_entity *dfu, u64 offset, void *buf, in dfu_read_medium_mmc() argument
262 switch (dfu->layout) { in dfu_read_medium_mmc()
264 ret = mmc_block_op(DFU_OP_READ, dfu, offset, buf, len); in dfu_read_medium_mmc()
268 ret = mmc_file_unbuffer(dfu, offset, buf, len); in dfu_read_medium_mmc()
272 dfu_get_layout(dfu->layout)); in dfu_read_medium_mmc()
278 void dfu_free_entity_mmc(struct dfu_entity *dfu) in dfu_free_entity_mmc() argument
299 int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *devstr, char *s) in dfu_fill_entity_mmc() argument
310 dfu->data.mmc.dev_num = simple_strtoul(devstr, NULL, 10); in dfu_fill_entity_mmc()
328 mmc = find_mmc_device(dfu->data.mmc.dev_num); in dfu_fill_entity_mmc()
331 dfu->data.mmc.dev_num); in dfu_fill_entity_mmc()
340 dfu->data.mmc.hw_partition = -EINVAL; in dfu_fill_entity_mmc()
342 dfu->layout = DFU_RAW_ADDR; in dfu_fill_entity_mmc()
343 dfu->data.mmc.lba_start = second_arg; in dfu_fill_entity_mmc()
344 dfu->data.mmc.lba_size = third_arg; in dfu_fill_entity_mmc()
345 dfu->data.mmc.lba_blk_size = mmc->read_bl_len; in dfu_fill_entity_mmc()
353 dfu->data.mmc.hw_partition = in dfu_fill_entity_mmc()
368 dfu->layout = DFU_RAW_ADDR; in dfu_fill_entity_mmc()
369 dfu->data.mmc.lba_start = partinfo.start; in dfu_fill_entity_mmc()
370 dfu->data.mmc.lba_size = partinfo.size; in dfu_fill_entity_mmc()
371 dfu->data.mmc.lba_blk_size = partinfo.blksz; in dfu_fill_entity_mmc()
373 dfu->layout = DFU_FS_FAT; in dfu_fill_entity_mmc()
375 dfu->layout = DFU_FS_EXT4; in dfu_fill_entity_mmc()
383 dfu->data.mmc.dev = second_arg; in dfu_fill_entity_mmc()
384 dfu->data.mmc.part = third_arg; in dfu_fill_entity_mmc()
387 dfu->dev_type = DFU_DEV_MMC; in dfu_fill_entity_mmc()
388 dfu->get_medium_size = dfu_get_medium_size_mmc; in dfu_fill_entity_mmc()
389 dfu->read_medium = dfu_read_medium_mmc; in dfu_fill_entity_mmc()
390 dfu->write_medium = dfu_write_medium_mmc; in dfu_fill_entity_mmc()
391 dfu->flush_medium = dfu_flush_medium_mmc; in dfu_fill_entity_mmc()
392 dfu->inited = 0; in dfu_fill_entity_mmc()
393 dfu->free_entity = dfu_free_entity_mmc; in dfu_fill_entity_mmc()