mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-22 09:58:52 +09:00
![wdenk](/assets/img/avatar_default.png)
- remove trailing white space, trailing empty lines, C++ comments, etc. - split cmd_boot.c (separate cmd_bdinfo.c and cmd_load.c) * Patches by Kenneth Johansson, 25 Jun 2003: - major rework of command structure (work done mostly by Michal Cendrowski and Joakim Kristiansen)
440 lines
10 KiB
C
440 lines
10 KiB
C
/*
|
|
* (C) Copyright 2003
|
|
* Martin Winistoerfer, martinwinistoerfer@gmx.ch.
|
|
*
|
|
* 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,
|
|
*/
|
|
|
|
/*
|
|
* File: 5xx_immap.h
|
|
*
|
|
* Discription: MPC555 Internal Memory Map
|
|
*
|
|
*/
|
|
|
|
#ifndef __IMMAP_5XX__
|
|
#define __IMMAP_5XX__
|
|
|
|
/* System Configuration Registers.
|
|
*/
|
|
typedef struct sys_conf {
|
|
uint sc_siumcr;
|
|
uint sc_sypcr;
|
|
char res1[6];
|
|
ushort sc_swsr;
|
|
uint sc_sipend;
|
|
uint sc_simask;
|
|
uint sc_siel;
|
|
uint sc_sivec;
|
|
uint sc_tesr;
|
|
uint sc_sgpiodt1;
|
|
uint sc_sgpiodt2;
|
|
uint sc_sgpiocr;
|
|
uint sc_emcr;
|
|
uint sc_res1aa;
|
|
uint sc_res1ab;
|
|
uint sc_pdmcr;
|
|
char res3[192];
|
|
} sysconf5xx_t;
|
|
|
|
|
|
/* Memory Controller Registers.
|
|
*/
|
|
typedef struct mem_ctlr {
|
|
uint memc_br0;
|
|
uint memc_or0;
|
|
uint memc_br1;
|
|
uint memc_or1;
|
|
uint memc_br2;
|
|
uint memc_or2;
|
|
uint memc_br3;
|
|
uint memc_or3;
|
|
char res1[32];
|
|
uint memc_dmbr;
|
|
uint memc_dmor;
|
|
char res2[48];
|
|
ushort memc_mstat;
|
|
ushort memc_res4a;
|
|
char res3[132];
|
|
} memctl5xx_t;
|
|
|
|
/* System Integration Timers.
|
|
*/
|
|
typedef struct sys_int_timers {
|
|
ushort sit_tbscr;
|
|
char res1[2];
|
|
uint sit_tbref0;
|
|
uint sit_tbref1;
|
|
char res2[20];
|
|
ushort sit_rtcsc;
|
|
char res3[2];
|
|
uint sit_rtc;
|
|
uint sit_rtsec;
|
|
uint sit_rtcal;
|
|
char res4[16];
|
|
ushort sit_piscr;
|
|
char res5[2];
|
|
uint sit_pitc;
|
|
uint sit_pitr;
|
|
char res6[52];
|
|
} sit5xx_t;
|
|
|
|
/* Clocks and Reset
|
|
*/
|
|
typedef struct clk_and_reset {
|
|
uint car_sccr;
|
|
uint car_plprcr;
|
|
ushort car_rsr;
|
|
ushort car_res7a;
|
|
ushort car_colir;
|
|
ushort car_res7b;
|
|
ushort car_vsrmcr;
|
|
ushort car_res7c;
|
|
char res1[108];
|
|
|
|
} car5xx_t;
|
|
|
|
#define TBSCR_TBE ((ushort)0x0001)
|
|
|
|
/* System Integration Timer Keys
|
|
*/
|
|
typedef struct sitk {
|
|
uint sitk_tbscrk;
|
|
uint sitk_tbref0k;
|
|
uint sitk_tbref1k;
|
|
uint sitk_tbk;
|
|
char res1[16];
|
|
uint sitk_rtcsck;
|
|
uint sitk_rtck;
|
|
uint sitk_rtseck;
|
|
uint sitk_rtcalk;
|
|
char res2[16];
|
|
uint sitk_piscrk;
|
|
uint sitk_pitck;
|
|
char res3[56];
|
|
} sitk5xx_t;
|
|
|
|
/* Clocks and Reset Keys.
|
|
*/
|
|
typedef struct cark {
|
|
uint cark_sccrk;
|
|
uint cark_plprcrk;
|
|
uint cark_rsrk;
|
|
char res1[1140];
|
|
} cark8xx_t;
|
|
|
|
/* The key to unlock registers maintained by keep-alive power.
|
|
*/
|
|
#define KAPWR_KEY ((unsigned int)0x55ccaa33)
|
|
|
|
/* Flash Configuration
|
|
*/
|
|
typedef struct fl {
|
|
uint fl_cmfmcr;
|
|
uint fl_cmftst;
|
|
uint fl_cmfctl;
|
|
char res1[52];
|
|
} fl5xx_t;
|
|
|
|
/* Dpram Control
|
|
*/
|
|
typedef struct dprc {
|
|
ushort dprc_dptmcr;
|
|
ushort dprc_ramtst;
|
|
ushort dprc_rambar;
|
|
ushort dprc_misrh;
|
|
ushort dprc_misrl;
|
|
ushort dprc_miscnt;
|
|
} dprc5xx_t;
|
|
|
|
/* Time Processor Unit
|
|
*/
|
|
typedef struct tpu {
|
|
ushort tpu_tpumcr;
|
|
ushort tpu_tcr;
|
|
ushort tpu_dscr;
|
|
ushort tpu_dssr;
|
|
ushort tpu_ticr;
|
|
ushort tpu_cier;
|
|
ushort tpu_cfsr0;
|
|
ushort tpu_cfsr1;
|
|
ushort tpu_cfsr2;
|
|
ushort tpu_cfsr3;
|
|
ushort tpu_hsqr0;
|
|
ushort tpu_hsqr1;
|
|
ushort tpu_hsrr0;
|
|
ushort tpu_hsrr1;
|
|
ushort tpu_cpr0;
|
|
ushort tpu_cpr1;
|
|
ushort tpu_cisr;
|
|
ushort tpu_lr;
|
|
ushort tpu_sglr;
|
|
ushort tpu_dcnr;
|
|
ushort tpu_tpumcr2;
|
|
ushort tpu_tpumcr3;
|
|
ushort tpu_isdr;
|
|
ushort tpu_iscr;
|
|
char res1[208];
|
|
char tpu[16][16];
|
|
char res2[512];
|
|
} tpu5xx_t;
|
|
|
|
/* QADC
|
|
*/
|
|
typedef struct qadc {
|
|
ushort qadc_64mcr;
|
|
ushort qadc_64test;
|
|
ushort qadc_64int;
|
|
u_char qadc_portqa;
|
|
u_char qadc_portqb;
|
|
ushort qadc_ddrqa;
|
|
ushort qadc_qacr0;
|
|
ushort qadc_qacr1;
|
|
ushort qadc_qacr2;
|
|
ushort qadc_qasr0;
|
|
ushort qadc_qasr1;
|
|
char res1[492];
|
|
/* command convertion word table */
|
|
ushort qadc_ccw[64];
|
|
/* result word table, unsigned right justified */
|
|
ushort qadc_rjurr[64];
|
|
/* result word table, signed left justified */
|
|
ushort qadc_ljsrr[64];
|
|
/* result word table, unsigned left justified */
|
|
ushort qadc_ljurr[64];
|
|
} qadc5xx_t;
|
|
|
|
/* QSMCM
|
|
*/
|
|
typedef struct qsmcm {
|
|
ushort qsmcm_qsmcr;
|
|
ushort qsmcm_qtest;
|
|
ushort qsmcm_qdsci_il;
|
|
ushort qsmcm_qspi_il;
|
|
ushort qsmcm_scc1r0;
|
|
ushort qsmcm_scc1r1;
|
|
ushort qsmcm_sc1sr;
|
|
ushort qsmcm_sc1dr;
|
|
char res1[2];
|
|
char res2[2];
|
|
ushort qsmcm_portqs;
|
|
u_char qsmcm_pqspar;
|
|
u_char qsmcm_ddrqs;
|
|
ushort qsmcm_spcr0;
|
|
ushort qsmcm_spcr1;
|
|
ushort qsmcm_spcr2;
|
|
u_char qsmcm_spcr3;
|
|
u_char qsmcm_spsr;
|
|
ushort qsmcm_scc2r0;
|
|
ushort qsmcm_scc2r1;
|
|
ushort qsmcm_sc2sr;
|
|
ushort qsmcm_sc2dr;
|
|
ushort qsmcm_qsci1cr;
|
|
ushort qsmcm_qsci1sr;
|
|
ushort qsmcm_sctq[16];
|
|
ushort qsmcm_scrq[16];
|
|
char res3[212];
|
|
ushort qsmcm_recram[32];
|
|
ushort qsmcm_tranram[32];
|
|
u_char qsmcm_comdram[32];
|
|
char res[3616];
|
|
} qsmcm5xx_t;
|
|
|
|
|
|
/* MIOS
|
|
*/
|
|
|
|
typedef struct mios {
|
|
ushort mios_mpwmsm0perr; /* mpwmsm0 */
|
|
ushort mios_mpwmsm0pulr;
|
|
ushort mios_mpwmsm0cntr;
|
|
ushort mios_mpwmsm0scr;
|
|
ushort mios_mpwmsm1perr; /* mpwmsm1 */
|
|
ushort mios_mpwmsm1pulr;
|
|
ushort mios_mpwmsm1cntr;
|
|
ushort mios_mpwmsm1scr;
|
|
ushort mios_mpwmsm2perr; /* mpwmsm2 */
|
|
ushort mios_mpwmsm2pulr;
|
|
ushort mios_mpwmsm2cntr;
|
|
ushort mios_mpwmsm2scr;
|
|
ushort mios_mpwmsm3perr; /* mpwmsm3 */
|
|
ushort mios_mpwmsm3pulr;
|
|
ushort mios_mpwmsm3cntr;
|
|
ushort mios_mpwmsm3scr;
|
|
char res1[16];
|
|
ushort mios_mmcsm6cnt; /* mmcsm6 */
|
|
ushort mios_mmcsm6mlr;
|
|
ushort mios_mmcsm6scrd, mmcsm6scr;
|
|
char res2[32];
|
|
ushort mios_mdasm11ar; /* mdasm11 */
|
|
ushort mios_mdasm11br;
|
|
ushort mios_mdasm11scrd, mdasm11scr;
|
|
ushort mios_mdasm12ar; /* mdasm12 */
|
|
ushort mios_mdasm12br;
|
|
ushort mios_mdasm12scrd, mdasm12scr;
|
|
ushort mios_mdasm13ar; /* mdasm13 */
|
|
ushort mios_mdasm13br;
|
|
ushort mios_mdasm13scrd, mdasm13scr;
|
|
ushort mios_mdasm14ar; /* mdasm14 */
|
|
ushort mios_mdasm14br;
|
|
ushort mios_mdasm14scrd, mdasm14scr;
|
|
ushort mios_mdasm15ar; /* mdasm15 */
|
|
ushort mios_mdasm15br;
|
|
ushort mios_mdasm15scrd, mdasm15scr;
|
|
ushort mios_mpwmsm16perr; /* mpwmsm16 */
|
|
ushort mios_mpwmsm16pulr;
|
|
ushort mios_mpwmsm16cntr;
|
|
ushort mios_mpwmsm16scr;
|
|
ushort mios_mpwmsm17perr; /* mpwmsm17 */
|
|
ushort mios_mpwmsm17pulr;
|
|
ushort mios_mpwmsm17cntr;
|
|
ushort mios_mpwmsm17scr;
|
|
ushort mios_mpwmsm18perr; /* mpwmsm18 */
|
|
ushort mios_mpwmsm18pulr;
|
|
ushort mios_mpwmsm18cntr;
|
|
ushort mios_mpwmsm18scr;
|
|
ushort mios_mpwmsm19perr; /* mpwmsm19 */
|
|
ushort mios_mpwmsm19pulr;
|
|
ushort mios_mpwmsm19cntr;
|
|
ushort mios_mpwmsm19scr;
|
|
char res3[16];
|
|
ushort mios_mmcsm22cnt; /* mmcsm22 */
|
|
ushort mios_mmcsm22mlr;
|
|
ushort mios_mmcsm22scrd, mmcsm22scr;
|
|
char res4[32];
|
|
ushort mios_mdasm27ar; /* mdasm27 */
|
|
ushort mios_mdasm27br;
|
|
ushort mios_mdasm27scrd, mdasm27scr;
|
|
ushort mios_mdasm28ar; /*mdasm28 */
|
|
ushort mios_mdasm28br;
|
|
ushort mios_mdasm28scrd, mdasm28scr;
|
|
ushort mios_mdasm29ar; /* mdasm29 */
|
|
ushort mios_mdasm29br;
|
|
ushort mios_mdasm29scrd, mdasm29scr;
|
|
ushort mios_mdasm30ar; /* mdasm30 */
|
|
ushort mios_mdasm30br;
|
|
ushort mios_mdasm30scrd, mdasm30scr;
|
|
ushort mios_mdasm31ar; /* mdasm31 */
|
|
ushort mios_mdasm31br;
|
|
ushort mios_mdasm31scrd, mdasm31scr;
|
|
ushort mios_mpiosm32dr;
|
|
ushort mios_mpiosm32ddr;
|
|
char res5[1788];
|
|
ushort mios_mios1tpcr;
|
|
char mios_res13[2];
|
|
ushort mios_mios1vnr;
|
|
ushort mios_mios1mcr;
|
|
char res6[12];
|
|
ushort mios_res42z;
|
|
ushort mios_mcpsmscr;
|
|
char res7[1000];
|
|
ushort mios_mios1sr0;
|
|
char res12[2];
|
|
ushort mios_mios1er0;
|
|
ushort mios_mios1rpr0;
|
|
char res8[40];
|
|
ushort mios_mios1lvl0;
|
|
char res9[14];
|
|
ushort mios_mios1sr1;
|
|
char res10[2];
|
|
ushort mios_mios1er1;
|
|
ushort mios_mios1rpr1;
|
|
char res11[40];
|
|
ushort mios_mios1lvl1;
|
|
char res13[1038];
|
|
} mios5xx_t;
|
|
|
|
/* Toucan Module
|
|
*/
|
|
typedef struct tcan {
|
|
ushort tcan_tcnmcr;
|
|
ushort tcan_cantcr;
|
|
ushort tcan_canicr;
|
|
u_char tcan_canctrl0;
|
|
u_char tcan_canctrl1;
|
|
u_char tcan_presdiv;
|
|
u_char tcan_canctrl2;
|
|
ushort tcan_timer;
|
|
char res1[4];
|
|
ushort tcan_rxgmskhi;
|
|
ushort tcan_rxgmsklo;
|
|
ushort tcan_rx14mskhi;
|
|
ushort tcan_rx14msklo;
|
|
ushort tcan_rx15mskhi;
|
|
ushort tcan_rx15msklo;
|
|
char res2[4];
|
|
ushort tcan_estat;
|
|
ushort tcan_imask;
|
|
ushort tcan_iflag;
|
|
u_char tcan_rxectr;
|
|
u_char tcan_txectr;
|
|
char res3[88];
|
|
struct {
|
|
ushort scr;
|
|
ushort id_high;
|
|
ushort id_low;
|
|
u_char data[8];
|
|
char res4[2];
|
|
} tcan_mbuff[16];
|
|
char res5[640];
|
|
} tcan5xx_t;
|
|
|
|
/* UIMB
|
|
*/
|
|
typedef struct uimb {
|
|
uint uimb_umcr;
|
|
char res1[12];
|
|
uint uimb_utstcreg;
|
|
char res2[12];
|
|
uint uimb_uipend;
|
|
} uimb5xx_t;
|
|
|
|
|
|
/* Internal Memory Map MPC555
|
|
*/
|
|
typedef struct immap {
|
|
char res1[262144]; /* CMF Flash A 256 Kbytes */
|
|
char res2[196608]; /* CMF Flash B 192 Kbytes */
|
|
char res3[2670592]; /* Reserved for Flash */
|
|
sysconf5xx_t im_siu_conf; /* SIU Configuration */
|
|
memctl5xx_t im_memctl; /* Memory Controller */
|
|
sit5xx_t im_sit; /* System Integration Timers */
|
|
car5xx_t im_clkrst; /* Clocks and Reset */
|
|
sitk5xx_t im_sitk; /* System Integration Timer Keys*/
|
|
cark8xx_t im_clkrstk; /* Clocks and Resert Keys */
|
|
fl5xx_t im_fla; /* Flash Module A */
|
|
fl5xx_t im_flb; /* Flash Module B */
|
|
char res4[14208]; /* Reserved for SIU */
|
|
dprc5xx_t im_dprc; /* Dpram Control Register */
|
|
char res5[8180]; /* Reserved */
|
|
char dptram[6144]; /* Dptram */
|
|
char res6[2048]; /* Reserved */
|
|
tpu5xx_t im_tpua; /* Time Proessing Unit A */
|
|
tpu5xx_t im_tpub; /* Time Processing Unit B */
|
|
qadc5xx_t im_qadca; /* QADC A */
|
|
qadc5xx_t im_qadcb; /* QADC B */
|
|
qsmcm5xx_t im_qsmcm; /* SCI and SPI */
|
|
mios5xx_t im_mios; /* MIOS */
|
|
tcan5xx_t im_tcana; /* Toucan A */
|
|
tcan5xx_t im_tcanb; /* Toucan B */
|
|
char res7[1792]; /* Reserved */
|
|
uimb5xx_t im_uimb; /* UIMB */
|
|
} immap_t;
|
|
|
|
#endif /* __IMMAP_5XX__ */
|