zynqmp.c (d348beaa63fa86d298e76d18c6699b14cbcc0f0f) | zynqmp.c (2882b39d564bfa531d86aa22900658285483107d) |
---|---|
1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * (C) Copyright 2014 - 2015 Xilinx, Inc. 4 * Michal Simek <michal.simek@xilinx.com> 5 */ 6 7#include <common.h> 8#include <sata.h> 9#include <ahci.h> 10#include <scsi.h> 11#include <malloc.h> 12#include <wdt.h> 13#include <asm/arch/clk.h> 14#include <asm/arch/hardware.h> 15#include <asm/arch/sys_proto.h> 16#include <asm/arch/psu_init_gpl.h> 17#include <asm/io.h> | 1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * (C) Copyright 2014 - 2015 Xilinx, Inc. 4 * Michal Simek <michal.simek@xilinx.com> 5 */ 6 7#include <common.h> 8#include <sata.h> 9#include <ahci.h> 10#include <scsi.h> 11#include <malloc.h> 12#include <wdt.h> 13#include <asm/arch/clk.h> 14#include <asm/arch/hardware.h> 15#include <asm/arch/sys_proto.h> 16#include <asm/arch/psu_init_gpl.h> 17#include <asm/io.h> |
18#include <dm/device.h> |
|
18#include <dm/uclass.h> 19#include <usb.h> 20#include <dwc3-uboot.h> 21#include <zynqmppl.h> 22#include <i2c.h> 23#include <g_dnl.h> 24 25DECLARE_GLOBAL_DATA_PTR; --- 463 unchanged lines hidden (view full) --- 489 490 return ret; 491} 492 493int board_late_init(void) 494{ 495 u32 reg = 0; 496 u8 bootmode; | 19#include <dm/uclass.h> 20#include <usb.h> 21#include <dwc3-uboot.h> 22#include <zynqmppl.h> 23#include <i2c.h> 24#include <g_dnl.h> 25 26DECLARE_GLOBAL_DATA_PTR; --- 463 unchanged lines hidden (view full) --- 490 491 return ret; 492} 493 494int board_late_init(void) 495{ 496 u32 reg = 0; 497 u8 bootmode; |
498 struct udevice *dev; 499 int bootseq = -1; 500 int bootseq_len = 0; |
|
497 int env_targets_len = 0; 498 const char *mode; 499 char *new_targets; 500 char *env_targets; 501 int ret; 502 503 if (!(gd->flags & GD_FLG_ENV_DEFAULT)) { 504 debug("Saved variables - Skipping\n"); --- 29 unchanged lines hidden (view full) --- 534 break; 535 case EMMC_MODE: 536 puts("EMMC_MODE\n"); 537 mode = "mmc0"; 538 env_set("modeboot", "emmcboot"); 539 break; 540 case SD_MODE: 541 puts("SD_MODE\n"); | 501 int env_targets_len = 0; 502 const char *mode; 503 char *new_targets; 504 char *env_targets; 505 int ret; 506 507 if (!(gd->flags & GD_FLG_ENV_DEFAULT)) { 508 debug("Saved variables - Skipping\n"); --- 29 unchanged lines hidden (view full) --- 538 break; 539 case EMMC_MODE: 540 puts("EMMC_MODE\n"); 541 mode = "mmc0"; 542 env_set("modeboot", "emmcboot"); 543 break; 544 case SD_MODE: 545 puts("SD_MODE\n"); |
542 mode = "mmc0"; | 546 if (uclass_get_device_by_name(UCLASS_MMC, 547 "sdhci@ff160000", &dev)) { 548 puts("Boot from SD0 but without SD0 enabled!\n"); 549 return -1; 550 } 551 debug("mmc0 device found at %p, seq %d\n", dev, dev->seq); 552 553 mode = "mmc"; 554 bootseq = dev->seq; |
543 env_set("modeboot", "sdboot"); 544 break; 545 case SD1_LSHFT_MODE: 546 puts("LVL_SHFT_"); 547 /* fall through */ 548 case SD_MODE1: 549 puts("SD_MODE1\n"); | 555 env_set("modeboot", "sdboot"); 556 break; 557 case SD1_LSHFT_MODE: 558 puts("LVL_SHFT_"); 559 /* fall through */ 560 case SD_MODE1: 561 puts("SD_MODE1\n"); |
550#if defined(CONFIG_ZYNQ_SDHCI0) && defined(CONFIG_ZYNQ_SDHCI1) 551 mode = "mmc1"; 552 env_set("sdbootdev", "1"); 553#else 554 mode = "mmc0"; 555#endif | 562 if (uclass_get_device_by_name(UCLASS_MMC, 563 "sdhci@ff170000", &dev)) { 564 puts("Boot from SD1 but without SD1 enabled!\n"); 565 return -1; 566 } 567 debug("mmc1 device found at %p, seq %d\n", dev, dev->seq); 568 569 mode = "mmc"; 570 bootseq = dev->seq; |
556 env_set("modeboot", "sdboot"); 557 break; 558 case NAND_MODE: 559 puts("NAND_MODE\n"); 560 mode = "nand0"; 561 env_set("modeboot", "nandboot"); 562 break; 563 default: 564 mode = ""; 565 printf("Invalid Boot Mode:0x%x\n", bootmode); 566 break; 567 } 568 | 571 env_set("modeboot", "sdboot"); 572 break; 573 case NAND_MODE: 574 puts("NAND_MODE\n"); 575 mode = "nand0"; 576 env_set("modeboot", "nandboot"); 577 break; 578 default: 579 mode = ""; 580 printf("Invalid Boot Mode:0x%x\n", bootmode); 581 break; 582 } 583 |
584 if (bootseq >= 0) { 585 bootseq_len = snprintf(NULL, 0, "%i", bootseq); 586 debug("Bootseq len: %x\n", bootseq_len); 587 } 588 |
|
569 /* 570 * One terminating char + one byte for space between mode 571 * and default boot_targets 572 */ 573 env_targets = env_get("boot_targets"); 574 if (env_targets) 575 env_targets_len = strlen(env_targets); 576 | 589 /* 590 * One terminating char + one byte for space between mode 591 * and default boot_targets 592 */ 593 env_targets = env_get("boot_targets"); 594 if (env_targets) 595 env_targets_len = strlen(env_targets); 596 |
577 new_targets = calloc(1, strlen(mode) + env_targets_len + 2); | 597 new_targets = calloc(1, strlen(mode) + env_targets_len + 2 + 598 bootseq_len); |
578 | 599 |
579 sprintf(new_targets, "%s %s", mode, 580 env_targets ? env_targets : ""); | 600 if (bootseq >= 0) 601 sprintf(new_targets, "%s%x %s", mode, bootseq, 602 env_targets ? env_targets : ""); 603 else 604 sprintf(new_targets, "%s %s", mode, 605 env_targets ? env_targets : ""); |
581 582 env_set("boot_targets", new_targets); 583 584 reset_reason(); 585 586 return 0; 587} 588 589int checkboard(void) 590{ 591 puts("Board: Xilinx ZynqMP\n"); 592 return 0; 593} | 606 607 env_set("boot_targets", new_targets); 608 609 reset_reason(); 610 611 return 0; 612} 613 614int checkboard(void) 615{ 616 puts("Board: Xilinx ZynqMP\n"); 617 return 0; 618} |