Lines Matching refs:part

11 #include <part.h>
307 static unsigned long mmc_read_and_flush(struct mmc_part *part,
317 if (start < part->info.start) {
321 if ((start + sectors) > (part->info.start + part->info.size)) {
322 sectors = part->info.start + part->info.size - start;
336 if (sectors > buf_size / part->info.blksz)
337 sectors = buf_size / part->info.blksz;
342 blks = blk_dread(part->mmc_blk,
345 flush_cache((ulong)tmp_buf, sectors * part->info.blksz);
348 memcpy(buffer, tmp_buf, sectors * part->info.blksz);
353 static unsigned long mmc_write(struct mmc_part *part, lbaint_t start,
360 if (start < part->info.start) {
364 if ((start + sectors) > (part->info.start + part->info.size)) {
365 sectors = part->info.start + part->info.size - start;
374 if (sectors > buf_size / part->info.blksz)
375 sectors = buf_size / part->info.blksz;
377 memcpy(tmp_buf, buffer, sectors * part->info.blksz);
382 return blk_dwrite(part->mmc_blk,
391 struct mmc_part *part;
394 part = malloc(sizeof(struct mmc_part));
395 if (!part)
399 part->mmc = find_mmc_device(dev_num);
400 if (!part->mmc) {
405 ret = mmc_init(part->mmc);
412 if (IS_MMC(part->mmc)) {
413 ret = mmc_switch_part(part->mmc, part_num);
415 printf("%s: MMC part switch failed, err = %d\n",
421 mmc_blk = mmc_get_blk_desc(part->mmc);
427 ret = part_get_info_by_name(mmc_blk, partition, &part->info);
433 part->dev_num = dev_num;
434 part->mmc_blk = mmc_blk;
436 return part;
438 free(part);
451 struct mmc_part *part;
459 part = get_partition(ops, partition);
460 if (!part)
463 if (!part->info.blksz)
466 start_offset = calc_offset(part, offset);
468 start_sector = start_offset / part->info.blksz;
469 sectors = num_bytes / part->info.blksz;
471 if (start_offset % part->info.blksz ||
472 num_bytes < part->info.blksz) {
474 if (start_offset % part->info.blksz) {
475 residue = part->info.blksz -
476 (start_offset % part->info.blksz);
484 ret = mmc_read_and_flush(part,
485 part->info.start +
498 tmp_buf += (start_offset % part->info.blksz);
501 ret = mmc_read_and_flush(part,
502 part->info.start +
512 start_offset % part->info.blksz,
515 ret = mmc_write(part, part->info.start +
533 ret = mmc_read_and_flush(part,
534 part->info.start +
538 ret = mmc_write(part,
539 part->info.start +
549 io_cnt += ret * part->info.blksz;
550 buffer += ret * part->info.blksz;
551 start_offset += ret * part->info.blksz;
552 num_bytes -= ret * part->info.blksz;
862 struct mmc_part *part;
865 part = get_partition(ops, partition);
866 if (!part)
869 uuid_size = sizeof(part->info.uuid);
873 memcpy(guid_buf, part->info.uuid, uuid_size);
896 struct mmc_part *part;
901 part = get_partition(ops, partition);
902 if (!part)
905 *out_size_num_bytes = part->info.blksz * part->info.size;