Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(947)

Side by Side Diff: common/cmd_cros.c

Issue 6658009: Changes to u-boot-next to match VBoot reference change (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/u-boot-next.git@chromeos-v2010.09
Patch Set: Fixes from Vadim Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | common/cmd_cros_bootstub.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 * 5 *
6 * Alternatively, this software may be distributed under the terms of the 6 * Alternatively, this software may be distributed under the terms of the
7 * GNU General Public License ("GPL") version 2 as published by the Free 7 * GNU General Public License ("GPL") version 2 as published by the Free
8 * Software Foundation. 8 * Software Foundation.
9 */ 9 */
10 10
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 "display <gbbaddr> <screen#> - display the screen\n" 66 "display <gbbaddr> <screen#> - display the screen\n"
67 "bmpblk info <gbbaddr> <screen#> - print the screen info\n"), 67 "bmpblk info <gbbaddr> <screen#> - print the screen info\n"),
68 #endif /* CONFIG_CHROMEOS_BMPBLK */ 68 #endif /* CONFIG_CHROMEOS_BMPBLK */
69 U_BOOT_CMD_MKENT(fmap, 2, 1, do_fmap, 69 U_BOOT_CMD_MKENT(fmap, 2, 1, do_fmap,
70 "Find and print flash map", 70 "Find and print flash map",
71 "addr len\n - Find and print flash map " 71 "addr len\n - Find and print flash map "
72 "in memory[addr, addr+len]\n"), 72 "in memory[addr, addr+len]\n"),
73 U_BOOT_CMD_MKENT(load_fw, 3, 1, do_load_fw, 73 U_BOOT_CMD_MKENT(load_fw, 3, 1, do_load_fw,
74 "Load firmware from memory " 74 "Load firmware from memory "
75 "(you have to download the image before running this)", 75 "(you have to download the image before running this)",
76 » » "addr len kkey\n - Wrapper of LoadFirmware." 76 » » "addr len shdata\n - Wrapper of LoadFirmware."
77 "Load firmware from [addr, addr+len] and " 77 "Load firmware from [addr, addr+len] and "
78 » » "store loaded kernel key at kkey\n"), 78 » » "store shared data at shdata\n"),
79 U_BOOT_CMD_MKENT(load_k, 3, 1, do_load_k, 79 U_BOOT_CMD_MKENT(load_k, 3, 1, do_load_k,
80 "Load kernel from the boot device", 80 "Load kernel from the boot device",
81 » » "addr len kkey\n - Load kernel to [addr, addr+len]\n"), 81 » » "addr len shdata\n - Load kernel to [addr, addr+len] and\n"
82 » » "modify shared data at shdata\n"),
82 U_BOOT_CMD_MKENT(help, 1, 1, do_cros_help, 83 U_BOOT_CMD_MKENT(help, 1, 1, do_cros_help,
83 "show this message", 84 "show this message",
84 "[action]") 85 "[action]")
85 }; 86 };
86 87
87 int do_cros(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 88 int do_cros(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
88 { 89 {
89 cmd_tbl_t *c; 90 cmd_tbl_t *c;
90 91
91 if (argc < 2) 92 if (argc < 2)
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 cxt->cur += count; 379 cxt->cur += count;
379 380
380 return count; 381 return count;
381 } 382 }
382 383
383 int do_load_fw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 384 int do_load_fw(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
384 { 385 {
385 LoadFirmwareParams params; 386 LoadFirmwareParams params;
386 VbNvContext vnc; 387 VbNvContext vnc;
387 struct context_t context; 388 struct context_t context;
388 » void *gbb, *block[2]; 389 » void *block[2];
389 » GoogleBinaryBlockHeader *gbbh;
390 uint64_t *psize[2]; 390 uint64_t *psize[2];
391 VbKeyBlockHeader *kbh; 391 VbKeyBlockHeader *kbh;
392 VbFirmwarePreambleHeader *fph; 392 VbFirmwarePreambleHeader *fph;
393 int i, status; 393 int i, status;
394 firmware_storage_t f = { 394 firmware_storage_t f = {
395 .seek = mem_seek, 395 .seek = mem_seek,
396 .read = mem_read, 396 .read = mem_read,
397 .context = (void *) &context 397 .context = (void *) &context
398 }; 398 };
399 399
400 if (argc != 4) 400 if (argc != 4)
401 USAGE(1, cmdtp, "Wrong number of arguments\n"); 401 USAGE(1, cmdtp, "Wrong number of arguments\n");
402 402
403 context.begin = (void *) simple_strtoul(argv[1], NULL, 16); 403 context.begin = (void *) simple_strtoul(argv[1], NULL, 16);
404 context.cur = context.begin; 404 context.cur = context.begin;
405 context.end = context.begin + simple_strtoul(argv[2], NULL, 16); 405 context.end = context.begin + simple_strtoul(argv[2], NULL, 16);
406 406
407 GetFirmwareBody_setup(&f, CONFIG_OFFSET_FW_A_DATA, 407 GetFirmwareBody_setup(&f, CONFIG_OFFSET_FW_A_DATA,
408 CONFIG_OFFSET_FW_B_DATA); 408 CONFIG_OFFSET_FW_B_DATA);
409 409
410 » gbb = context.begin + CONFIG_OFFSET_GBB; 410 » params.gbb_data = context.begin + CONFIG_OFFSET_GBB;
411 » gbbh = (GoogleBinaryBlockHeader *) gbb; 411 » params.gbb_size = CONFIG_LENGTH_GBB;
412 » params.firmware_root_key_blob = gbb + gbbh->rootkey_offset;
413 412
414 debug("do_load_fw: params.firmware_root_key_blob:\t%p\n", 413 debug("do_load_fw: params.firmware_root_key_blob:\t%p\n",
415 params.firmware_root_key_blob); 414 params.firmware_root_key_blob);
416 415
417 params.verification_block_0 = context.begin + CONFIG_OFFSET_FW_A_KEY; 416 params.verification_block_0 = context.begin + CONFIG_OFFSET_FW_A_KEY;
418 params.verification_block_1 = context.begin + CONFIG_OFFSET_FW_B_KEY; 417 params.verification_block_1 = context.begin + CONFIG_OFFSET_FW_B_KEY;
419 418
420 block[0] = params.verification_block_0; 419 block[0] = params.verification_block_0;
421 block[1] = params.verification_block_1; 420 block[1] = params.verification_block_1;
422 psize[0] = &params.verification_size_0; 421 psize[0] = &params.verification_size_0;
423 psize[1] = &params.verification_size_1; 422 psize[1] = &params.verification_size_1;
424 for (i = 0; i < 2; i++) { 423 for (i = 0; i < 2; i++) {
425 kbh = (VbKeyBlockHeader *) block[i]; 424 kbh = (VbKeyBlockHeader *) block[i];
426 fph = (VbFirmwarePreambleHeader *) 425 fph = (VbFirmwarePreambleHeader *)
427 (block[i] + kbh->key_block_size); 426 (block[i] + kbh->key_block_size);
428 427
429 *psize[i] = kbh->key_block_size + fph->preamble_size; 428 *psize[i] = kbh->key_block_size + fph->preamble_size;
430 429
431 debug("do_load_fw: params.verification_block_%d:\t%p\n", 430 debug("do_load_fw: params.verification_block_%d:\t%p\n",
432 i, block[i]); 431 i, block[i]);
433 debug("do_load_fw: params.verification_size_%d:\t%08llx\n", 432 debug("do_load_fw: params.verification_size_%d:\t%08llx\n",
434 i, *psize[i]); 433 i, *psize[i]);
435 } 434 }
436 435
437 » params.kernel_sign_key_blob = 436 » params.shared_data_blob =
438 (uint8_t *) simple_strtoul(argv[3], NULL, 16); 437 (uint8_t *) simple_strtoul(argv[3], NULL, 16);
439 » params.kernel_sign_key_size = LOAD_FIRMWARE_KEY_BLOB_REC_SIZE; 438 » params.shared_data_size = VB_SHARED_DATA_REC_SIZE;
440 439
441 » debug("do_load_fw: params.kernel_sign_key_blob:\t%p\n", 440 » debug("do_load_fw: params.shared_data_blob:\t%p\n",
442 » » » params.kernel_sign_key_blob); 441 » » » params.shared_data_blob);
443 » debug("do_load_fw: params.kernel_sign_key_size:\t%08llx\n", 442 » debug("do_load_fw: params.shared_data_size:\t%08llx\n",
444 » » » params.kernel_sign_key_size); 443 » » » params.shared_data_size);
445 444
446 params.caller_internal = &f; 445 params.caller_internal = &f;
447 446
448 params.boot_flags = 0; 447 params.boot_flags = 0;
449 448
450 /* TODO: load vnc.raw from NV storage */ 449 /* TODO: load vnc.raw from NV storage */
451 params.nv_context = &vnc; 450 params.nv_context = &vnc;
452 451
453 status = LoadFirmware(&params); 452 status = LoadFirmware(&params);
454 453
(...skipping 30 matching lines...) Expand all
485 VbNvContext vnc; 484 VbNvContext vnc;
486 block_dev_desc_t *dev_desc; 485 block_dev_desc_t *dev_desc;
487 int i, status; 486 int i, status;
488 487
489 if (argc != 4) 488 if (argc != 4)
490 USAGE(1, cmdtp, "Wrong number of arguments\n"); 489 USAGE(1, cmdtp, "Wrong number of arguments\n");
491 490
492 if ((dev_desc = get_bootdev()) == NULL) 491 if ((dev_desc = get_bootdev()) == NULL)
493 USAGE(1, cmdtp, "No boot device set yet\n"); 492 USAGE(1, cmdtp, "No boot device set yet\n");
494 493
495 » par.header_sign_key_blob = 494 » par.shared_data_blob =
496 (uint8_t *) simple_strtoul(argv[3], NULL, 16); 495 (uint8_t *) simple_strtoul(argv[3], NULL, 16);
496 par.shared_data_size = VB_SHARED_DATA_REC_SIZE;
497
497 par.bytes_per_lba = (uint64_t) dev_desc->blksz; 498 par.bytes_per_lba = (uint64_t) dev_desc->blksz;
498 par.ending_lba = (uint64_t) get_limit() - 1; 499 par.ending_lba = (uint64_t) get_limit() - 1;
499 par.kernel_buffer = (void *) simple_strtoul(argv[1], NULL, 16); 500 par.kernel_buffer = (void *) simple_strtoul(argv[1], NULL, 16);
500 par.kernel_buffer_size = (uint64_t) simple_strtoul(argv[2], NULL, 16); 501 par.kernel_buffer_size = (uint64_t) simple_strtoul(argv[2], NULL, 16);
501 par.boot_flags = BOOT_FLAG_DEVELOPER | BOOT_FLAG_SKIP_ADDR_CHECK; 502 par.boot_flags = BOOT_FLAG_DEVELOPER | BOOT_FLAG_SKIP_ADDR_CHECK;
502 503
504 /* TODO: load GBB; see do_load_fw() */
505 par.gbb_data = NULL;
506 par.gbb_size = 0;
507
503 /* TODO: load vnc.raw from NV storage */ 508 /* TODO: load vnc.raw from NV storage */
504 par.nv_context = &vnc; 509 par.nv_context = &vnc;
505 510
506 status = LoadKernel(&par); 511 status = LoadKernel(&par);
507 512
508 if (vnc.raw_changed) { 513 if (vnc.raw_changed) {
509 /* TODO: save vnc.raw to NV storage */ 514 /* TODO: save vnc.raw to NV storage */
510 } 515 }
511 516
512 switch (status) { 517 switch (status) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 return _do_help(&cmd_cros_sub[0], ARRAY_SIZE(cmd_cros_sub), 556 return _do_help(&cmd_cros_sub[0], ARRAY_SIZE(cmd_cros_sub),
552 cmdtp, flag, argc, argv); 557 cmdtp, flag, argc, argv);
553 558
554 c = find_cmd_tbl(argv[1], &cmd_cros_sub[0], ARRAY_SIZE(cmd_cros_sub)); 559 c = find_cmd_tbl(argv[1], &cmd_cros_sub[0], ARRAY_SIZE(cmd_cros_sub));
555 if (!c) 560 if (!c)
556 USAGE(1, cmdtp, "Unrecognized action: %s\n", argv[1]); 561 USAGE(1, cmdtp, "Unrecognized action: %s\n", argv[1]);
557 562
558 cmd_usage(c); 563 cmd_usage(c);
559 return 0; 564 return 0;
560 } 565 }
OLDNEW
« no previous file with comments | « no previous file | common/cmd_cros_bootstub.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698