| /* |
| * Copyright (c) Orbacom Systems, Inc <www.orbacom.com> |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms are freely |
| * permitted provided that the above copyright notice and this |
| * paragraph and the following disclaimer are duplicated in all |
| * such forms. |
| * |
| * This software is provided "AS IS" and without any express or |
| * implied warranties, including, without limitation, the implied |
| * warranties of merchantability and fitness for a particular |
| * purpose. |
| */ |
| |
| #include <common.h> |
| #include <asm/processor.h> |
| #include <image.h> |
| #include <net.h> |
| |
| #include <lynxkdi.h> |
| |
| DECLARE_GLOBAL_DATA_PTR; |
| |
| #if defined(CONFIG_440EP) || defined(CONFIG_440GR) |
| void lynxkdi_boot(image_header_t *hdr) |
| { |
| void (*lynxkdi)(void) = (void(*)(void))image_get_ep(hdr); |
| lynxos_bootparms_t *parms = (lynxos_bootparms_t *)0x0020; |
| bd_t *kbd; |
| u32 *psz = (u32 *)(image_get_load(hdr) + 0x0204); |
| |
| memset(parms, 0, sizeof(*parms)); |
| kbd = gd->bd; |
| parms->clock_ref = kbd->bi_busfreq; |
| parms->dramsz = kbd->bi_memsize; |
| eth_getenv_enetaddr("ethaddr", parms->ethaddr); |
| mtspr(SPRN_SPRG2, 0x0020); |
| |
| /* Do a simple check for Bluecat so we can pass the |
| * kernel command line parameters. |
| */ |
| /* FIXME: NOT SURE HERE ! */ |
| if (le32_to_cpu(*psz) == image_get_data_size(hdr)) { |
| char *args; |
| char *cmdline = (char *)(image_get_load(hdr) + 0x020c); |
| int len; |
| |
| printf("Booting Bluecat KDI ...\n"); |
| udelay(200*1000); /* Allow serial port to flush */ |
| if ((args = getenv("bootargs")) == NULL) |
| args = ""; |
| /* Prepend the cmdline */ |
| len = strlen(args); |
| if (len && (len + strlen(cmdline) + 2 < (0x0400 - 0x020c))) { |
| memmove(cmdline + strlen(args) + 1, cmdline, |
| strlen(cmdline)); |
| strcpy(cmdline, args); |
| cmdline[len] = ' '; |
| } |
| } |
| else { |
| printf("Booting LynxOS KDI ...\n"); |
| } |
| |
| lynxkdi(); |
| } |
| #else |
| #error "Lynx KDI support not implemented for configured CPU" |
| #endif |