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