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}