Blame view
cmd/read.c
1.75 KB
ff048ea91 Add a command to ... |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* * Copyright (c) 2011 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. * * Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. */ #include <common.h> #include <command.h> #include <part.h> |
2c840c82b MLK-18591-3 andro... |
14 |
int do_raw_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) |
ff048ea91 Add a command to ... |
15 16 |
{ char *ep; |
4101f6879 dm: Drop the bloc... |
17 |
struct blk_desc *dev_desc = NULL; |
ff048ea91 Add a command to ... |
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
int dev; int part = 0; disk_partition_t part_info; ulong offset = 0u; ulong limit = 0u; void *addr; uint blk; uint cnt; if (argc != 6) { cmd_usage(cmdtp); return 1; } dev = (int)simple_strtoul(argv[2], &ep, 16); if (*ep) { if (*ep != ':') { printf("Invalid block device %s ", argv[2]); return 1; } part = (int)simple_strtoul(++ep, NULL, 16); } |
db1d9e78e dm: blk: Rename g... |
41 |
dev_desc = blk_get_dev(argv[1], dev); |
ff048ea91 Add a command to ... |
42 43 44 45 46 47 48 49 50 51 52 |
if (dev_desc == NULL) { printf("Block device %s %d not supported ", argv[1], dev); return 1; } addr = (void *)simple_strtoul(argv[3], NULL, 16); blk = simple_strtoul(argv[4], NULL, 16); cnt = simple_strtoul(argv[5], NULL, 16); if (part != 0) { |
3e8bd4695 dm: part: Rename ... |
53 |
if (part_get_info(dev_desc, part, &part_info)) { |
ff048ea91 Add a command to ... |
54 55 56 57 58 59 60 |
printf("Cannot find partition %d ", part); return 1; } offset = part_info.start; limit = part_info.size; } else { |
4101f6879 dm: Drop the bloc... |
61 |
/* Largest address not available in struct blk_desc. */ |
ff048ea91 Add a command to ... |
62 63 64 65 66 67 68 69 |
limit = ~0; } if (cnt + blk > limit) { printf("Read out of range "); return 1; } |
d03618d5c cmd/read.c: Fix c... |
70 |
if (blk_dread(dev_desc, offset + blk, cnt, addr) != cnt) { |
ff048ea91 Add a command to ... |
71 72 73 74 75 76 77 78 79 |
printf("Error reading blocks "); return 1; } return 0; } U_BOOT_CMD( |
2c840c82b MLK-18591-3 andro... |
80 |
read, 6, 0, do_raw_read, |
ff048ea91 Add a command to ... |
81 82 83 |
"Load binary data from a partition", "<interface> <dev[:part]> addr blk# cnt" ); |