Add support for LynuxWorks Kernel Downloadable Images (KDIs). Both LynxOS and BlueCat linux KDIs are supported. * Patch by Richard Woodruff, 25 Jul 2003: use more reliable reset for OMAP/925T * Patch by Nye Liu, 25 Jul 2003: fix typo in mpc8xx.h * Patch by Richard Woodruff, 24 Jul 2003: Fixes for cmd_nand.c: - Fixed null dereferece which could result in incorrect ECC values. - Added support for devices with no Ready/Busy signal hooked up. - Added OMAP1510 read/write protect handling. - Fixed nand.h's ECCPOS. A conflict existed with POS5 and badblock for non-JFFS2. - Switched default ECC to be JFFS2.master
parent
7784674852
commit
1f4bb37d6b
@ -0,0 +1,70 @@ |
|||||||
|
/*
|
||||||
|
* 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> |
||||||
|
|
||||||
|
#if defined(CONFIG_LYNXKDI) |
||||||
|
#include <lynxkdi.h> |
||||||
|
|
||||||
|
#if defined(CONFIG_MPC8260) |
||||||
|
void lynxkdi_boot ( image_header_t *hdr ) |
||||||
|
{ |
||||||
|
void (*lynxkdi)(void) = (void(*)(void))hdr->ih_ep; |
||||||
|
lynxos_bootparms_t *parms = (lynxos_bootparms_t *)0x0020; |
||||||
|
bd_t *kbd; |
||||||
|
DECLARE_GLOBAL_DATA_PTR; |
||||||
|
u32 *psz = (u32 *)(hdr->ih_load + 0x0204); |
||||||
|
|
||||||
|
memset( parms, 0, sizeof(*parms)); |
||||||
|
kbd = gd->bd; |
||||||
|
parms->clock_ref = kbd->bi_busfreq; |
||||||
|
parms->dramsz = kbd->bi_memsize; |
||||||
|
memcpy(parms->ethaddr, kbd->bi_enetaddr, 6); |
||||||
|
mtspr(SPRN_SPRG2, 0x0020); |
||||||
|
|
||||||
|
/* Do a simple check for Bluecat so we can pass the
|
||||||
|
* kernel command line parameters. |
||||||
|
*/ |
||||||
|
if( le32_to_cpu(*psz) == hdr->ih_size ){ |
||||||
|
char *args; |
||||||
|
char *cmdline = (char *)(hdr->ih_load + 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 |
||||||
|
|
||||||
|
#endif /* CONFIG_LYNXKDI */ |
||||||
|
|
@ -0,0 +1,57 @@ |
|||||||
|
LYNX KDI SUPPORT |
||||||
|
|
||||||
|
Last Update: July 20, 2003 |
||||||
|
======================================================================= |
||||||
|
|
||||||
|
This file describes support for LynuxWorks KDI within U-Boot. Support |
||||||
|
is enabled by defining CONFIG_LYNXKDI. |
||||||
|
|
||||||
|
|
||||||
|
LYNXOS AND BLUECAT SUPPORTED |
||||||
|
============================ |
||||||
|
Both LynxOS and BlueCat linux KDIs are supported. The implementation |
||||||
|
automatically detects which is being booted. When you use mkimage |
||||||
|
you should specify "lynxos" for both (see target-specific notes). |
||||||
|
|
||||||
|
|
||||||
|
SUPPORTED ARCHITECTURE/TARGETS |
||||||
|
============================== |
||||||
|
The following targets have been tested: |
||||||
|
|
||||||
|
-PowerPC MPC8260ADS |
||||||
|
|
||||||
|
|
||||||
|
FILES TO LOOK AT |
||||||
|
================ |
||||||
|
include/lynxkdi.h -defines a simple struct passed to a kdi. |
||||||
|
common/lynxkdi.c -implements the call to the kdi. |
||||||
|
common/cmd_bootm.c -top-level command implementation ("bootm"). |
||||||
|
|
||||||
|
|
||||||
|
==================================================================== |
||||||
|
TARGET SPECIFIC NOTES |
||||||
|
==================================================================== |
||||||
|
|
||||||
|
MPC8260ADS |
||||||
|
=========== |
||||||
|
The default LynxOS and BlueCat implementations require some |
||||||
|
modifications to the config file. |
||||||
|
|
||||||
|
Edit include/configs/MPC8260ADS.h to use the following: |
||||||
|
|
||||||
|
#define CFG_IMMR 0xFA200000 |
||||||
|
#define CFG_BCSR 0xFA100000 |
||||||
|
#define CFG_BR1_PRELIM 0xFA101801 |
||||||
|
|
||||||
|
When creating a LynxOS or BlueCat u-boot image using mkimage, |
||||||
|
you must specify the following: |
||||||
|
|
||||||
|
Both: -A ppc -O lynxos -T kernel -C none |
||||||
|
LynxOS: -a 0x00004000 -e 0x00004020 |
||||||
|
BlueCat: -a 0x00500000 -e 0x00507000 |
||||||
|
|
||||||
|
To pass the MAC address to BlueCat you should define the |
||||||
|
"fcc2_ether_addr" parameter in the "bootargs" environment |
||||||
|
variable. E.g.: |
||||||
|
|
||||||
|
==> setenv bootargs fcc2_ether_addr=00:11:22:33:44:55:66 |
@ -0,0 +1,41 @@ |
|||||||
|
/*
|
||||||
|
* (C) Copyright 2003 |
||||||
|
* Orbacom Systems, Inc. |
||||||
|
* |
||||||
|
* See file CREDITS for list of people who contributed to this |
||||||
|
* project. |
||||||
|
* |
||||||
|
* This program is free software; you can redistribute it and/or |
||||||
|
* modify it under the terms of the GNU General Public License as |
||||||
|
* published by the Free Software Foundation; either version 2 of |
||||||
|
* the License, or (at your option) any later version. |
||||||
|
* |
||||||
|
* This program is distributed in the hope that it will be useful, |
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
* GNU General Public License for more details. |
||||||
|
* |
||||||
|
* You should have received a copy of the GNU General Public License |
||||||
|
* along with this program; if not, write to the Free Software |
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||||
|
* MA 02111-1307 USA |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef __LYNXKDI_H__ |
||||||
|
#define __LYNXKDI_H__ |
||||||
|
|
||||||
|
|
||||||
|
/* Boot parameter struct passed to kernel
|
||||||
|
*/ |
||||||
|
typedef struct lynxos_bootparms_t { |
||||||
|
uint8_t rsvd1[2]; /* Reserved */ |
||||||
|
uint8_t ethaddr[6]; /* Ethernet address */ |
||||||
|
uint16_t flags; /* Boot flags */ |
||||||
|
uint32_t rate; /* System frequency */ |
||||||
|
uint32_t clock_ref; /* Time reference */ |
||||||
|
uint32_t dramsz; /* DRAM size */ |
||||||
|
uint32_t rsvd2; /* Reserved */ |
||||||
|
} lynxos_bootparms_t; |
||||||
|
|
||||||
|
|
||||||
|
#endif /* __LYNXKDI_H__ */ |
Loading…
Reference in new issue