/*
 * (C) Copyright 2000
 * Dave Ellis, SIXNET, dge@sixnetio.com
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

Using the Motorola MPC8XXFADS development board
===============================================

CONFIGURATIONS
--------------

There are ready-to-use default configurations available for the
FADS823, FADS850SAR and FADS860T. The FADS860T configuration also
works for the 855T processor.

LOADING U-Boot INTO FADS FLASH MEMORY
--------------------------------------

MPC8BUG can load U-Boot into the FLASH memory using LOADF.

    loadf u-boot.srec 100000


STARTING U-Boot FROM MPC8BUG
-----------------------------

To start U-Boot from MPC8BUG:

1. Reset the board:
    reset :h

2. Change BR0 and OR0 back to their values at reset:
    rms memc br0 00000001
    rms memc or0 00000d34

3. Modify DER so MPC8BUG gets control only when it should:
    rms der 2002000f

4. Start as if from reset:
    go 100

This is NOT exactly the same as starting U-Boot without
MPC8BUG. MPC8BUG turns off the watchdog as part of the hard reset.
After it does the reset it writes SYPCR (to disable the watchdog)
and sets BR0 and OR0 to map the FLASH at 0x02800000 (and does lots
of other initialization). That is why it is necessary to set BR0
and OR0 to map the FLASH everywhere. U-Boot can't turn on the
watchdog after that, since MPC8BUG has used the only chance to write
to SYPCR.

Here is a bizarre sequence of MPC8BUG and U-Boot commands that lets
U-Boot write to SYPCR. It works with MPC8BUG 1.5 and an 855T
processor (your mileage may vary). It is probably better (and a lot
easier) just to accept having the watchdog disabled when the debug
cable is connected.

in MPC8BUG:
  reset :h
  rms memc br0 00000001
  rms memc or0 00000d34
  rms der 2000f
  go 100

Now U-Boot is running with the MPC8BUG value for SYPCR. Use the
U-Boot 'reset' command to reset the board.
  =>reset
Next, in MPC8BUG:
  rms der 2000f
  go

Now U-Boot is running with the U-Boot value for SYPCR.
