X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=board%2Fpcippc2%2Fpcippc2.c;h=6ee44d691d9f5e29d15d737e85f52cb5e5c94896;hb=84efbf4d144ff8aaed3cca036aebb1fe69eff3f4;hp=e1b065b0cedbd21795d223f2a60dab67b2ea7804;hpb=c609719b8d1b2dca590e0ed499016d041203e403;p=platform%2Fkernel%2Fu-boot.git diff --git a/board/pcippc2/pcippc2.c b/board/pcippc2/pcippc2.c index e1b065b..6ee44d6 100644 --- a/board/pcippc2/pcippc2.c +++ b/board/pcippc2/pcippc2.c @@ -28,12 +28,15 @@ #include #include #include +#include #include "hardware.h" #include "pcippc2.h" #include "sconsole.h" #include "fpga_serial.h" +DECLARE_GLOBAL_DATA_PTR; + #if defined(CONFIG_WATCHDOG) static int pcippc2_wdt_init_done = 0; @@ -61,19 +64,21 @@ u32 pcippc2_sdram_size (void) return in32 (REG (CPC0, RGBAN1)); } -long initdram (int board_type) +phys_size_t initdram (int board_type) { return cpc710_ram_init (); } -void do_reset (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) +int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { out32 (REG (CPC0, SPOR), 0); iobarrier_rw (); while (1); + /* notreached */ + return (-1); } -int board_pre_init (void) +int board_early_init_f (void) { out32 (REG (CPC0, RSTR), 0xC0000000); iobarrier_rw (); @@ -106,17 +111,17 @@ int board_pre_init (void) void after_reloc (ulong dest_addr) { - DECLARE_GLOBAL_DATA_PTR; - /* Jump to the main U-Boot board init code */ - board_init_r (gd, dest_addr); + board_init_r ((gd_t *)gd, dest_addr); } int misc_init_r (void) { pcippc2_fpga_init (); + pcippc2_cpci3264_init (); + #if defined(CONFIG_WATCHDOG) pcippc2_wdt_init (); #endif @@ -133,7 +138,7 @@ int misc_init_r (void) return (0); } -void pci_init (void) +void pci_init_board (void) { cpc710_pci_init (); @@ -142,10 +147,31 @@ void pci_init (void) cpc710_pci_enable_timeout (); } +#ifdef CONFIG_CMD_DOC void doc_init (void) { doc_probe (pcippc2_fpga1_phys + HW_FPGA1_DOC); } +#endif + +void pcippc2_cpci3264_init (void) +{ + pci_dev_t bdf = pci_find_device(FPGA_VENDOR_ID, FPGA_DEVICE_ID, 0); + + if (bdf == -1) + { + puts("Unable to find FPGA !\n"); + hang(); + } + + if((in32(pcippc2_fpga0_phys + HW_FPGA0_BOARD) & 0x01000000) == 0x01000000) + /* 32-bits Compact PCI bus - LSB bit */ + { + iobarrier_rw(); + out32(BRIDGE(CPCI, PCIDG), 0x40000000); /* 32-bits bridge, Pipeline */ + iobarrier_rw(); + } +} #if defined(CONFIG_WATCHDOG) @@ -179,8 +205,8 @@ void watchdog_reset (void) enable_interrupts (); } -#if (CONFIG_COMMANDS & CFG_CMD_BSP) -int do_wd (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) +#if defined(CONFIG_CMD_BSP) +int do_wd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { switch (argc) { case 1: @@ -206,9 +232,22 @@ int do_wd (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) default: break; } - printf ("Usage:\n%s\n", cmdtp->usage); + cmd_usage(cmdtp); return 1; } -#endif /* CFG_CMD_BSP */ +U_BOOT_CMD( + wd, 2, 1, do_wd, + "check and set watchdog", + "on - switch watchDog on\n" + "wd off - switch watchdog off\n" + "wd - print current status" +); + +#endif #endif /* CONFIG_WATCHDOG */ + +int board_eth_init(bd_t *bis) +{ + return pci_eth_init(bis); +}