diff options
| author | wdenk <wdenk> | 2002-03-08 21:31:05 +0000 | 
|---|---|---|
| committer | wdenk <wdenk> | 2002-03-08 21:31:05 +0000 | 
| commit | 012771d88adfb5e0886591880041f05fc8b15bdd (patch) | |
| tree | 9cd947b8b4c6f05cff5be1b69a0f1ca81b2c86ec | |
| parent | 67fc21f34ef642417e7418a0575d5b5ff70d77d8 (diff) | |
| download | olio-uboot-2014.01-012771d88adfb5e0886591880041f05fc8b15bdd.tar.xz olio-uboot-2014.01-012771d88adfb5e0886591880041f05fc8b15bdd.zip | |
Initial revision
44 files changed, 11173 insertions, 0 deletions
| diff --git a/board/cray/L1/Makefile b/board/cray/L1/Makefile new file mode 100644 index 000000000..12b2fa810 --- /dev/null +++ b/board/cray/L1/Makefile @@ -0,0 +1,47 @@ +# +# (C) Copyright 2000 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# 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 +# + +include $(TOPDIR)/config.mk + +LIB	= lib$(BOARD).a + +OBJS	= $(BOARD).o flash.o +SOBJS	= init.o + +$(LIB):	$(OBJS) $(SOBJS) +	$(AR) crv $@ $^ + +clean: +	rm -f $(SOBJS) $(OBJS) + +distclean:	clean +	rm -f $(LIB) core *.bak .depend + +######################################################################### + +.depend:	Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) +		$(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ + +sinclude .depend + +######################################################################### diff --git a/board/eltec/mhpc/u-boot.lds b/board/eltec/mhpc/u-boot.lds new file mode 100644 index 000000000..026b39121 --- /dev/null +++ b/board/eltec/mhpc/u-boot.lds @@ -0,0 +1,123 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * 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 + */ + +OUTPUT_ARCH(powerpc) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); +/* Do we need any of these for elf? +   __DYNAMIC = 0;    */ +SECTIONS +{ +  /* Read-only sections, merged into text segment: */ +  . = + SIZEOF_HEADERS; +  .interp : { *(.interp) } +  .hash          : { *(.hash)		} +  .dynsym        : { *(.dynsym)		} +  .dynstr        : { *(.dynstr)		} +  .rel.text      : { *(.rel.text)		} +  .rela.text     : { *(.rela.text) 	} +  .rel.data      : { *(.rel.data)		} +  .rela.data     : { *(.rela.data) 	} +  .rel.rodata    : { *(.rel.rodata) 	} +  .rela.rodata   : { *(.rela.rodata) 	} +  .rel.got       : { *(.rel.got)		} +  .rela.got      : { *(.rela.got)		} +  .rel.ctors     : { *(.rel.ctors)	} +  .rela.ctors    : { *(.rela.ctors)	} +  .rel.dtors     : { *(.rel.dtors)	} +  .rela.dtors    : { *(.rela.dtors)	} +  .rel.bss       : { *(.rel.bss)		} +  .rela.bss      : { *(.rela.bss)		} +  .rel.plt       : { *(.rel.plt)		} +  .rela.plt      : { *(.rela.plt)		} +  .init          : { *(.init)	} +  .plt : { *(.plt) } +  .text      : +  { +    cpu/mpc8xx/start.o	(.text) +    common/environment.o(.text) + +    *(.text) +    *(.fixup) +    *(.got1) +  } +  _etext = .; +  PROVIDE (etext = .); +  .rodata    : +  { +    *(.rodata) +    *(.rodata1) +  } +  .fini      : { *(.fini)    } =0 +  .ctors     : { *(.ctors)   } +  .dtors     : { *(.dtors)   } + +  /* Read-write section, merged into data segment: */ +  . = (. + 0x00FF) & 0xFFFFFF00; +  _erotext = .; +  PROVIDE (erotext = .); +  .reloc   : +  { +    *(.got) +    _GOT2_TABLE_ = .; +    *(.got2) +    _FIXUP_TABLE_ = .; +    *(.fixup) +  } +  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; +  __fixup_entries = (. - _FIXUP_TABLE_)>>2; + +  .data    : +  { +    *(.data) +    *(.data1) +    *(.sdata) +    *(.sdata2) +    *(.dynamic) +    CONSTRUCTORS +  } +  _edata  =  .; +  PROVIDE (edata = .); + +  __start___ex_table = .; +  __ex_table : { *(__ex_table) } +  __stop___ex_table = .; + +  . = ALIGN(256); +  __init_begin = .; +  .text.init : { *(.text.init) } +  .data.init : { *(.data.init) } +  . = ALIGN(256); +  __init_end = .; + +  __bss_start = .; +  .bss       : +  { +   *(.sbss) *(.scommon) +   *(.dynbss) +   *(.bss) +   *(COMMON) +  } +  _end = . ; +  PROVIDE (end = .); +} + diff --git a/board/evb64260/bootseq.txt b/board/evb64260/bootseq.txt new file mode 100644 index 000000000..648c2ff79 --- /dev/null +++ b/board/evb64260/bootseq.txt @@ -0,0 +1,94 @@ +(cpu/mpc7xxx/start.S) + +start: +    b boot_cold + +start_warm: +    b boot_warm + + +boot_cold: +boot_warm: +    clear bats +    init l2 (if enabled) +    init altivec (if enabled) +    invalidate l2 (if enabled) +    setup bats (from defines in config_EVB) +    enable_addr_trans: (if MMU enabled) +	enable MSR_IR and MSR_DR +    jump to in_flash + +in_flash: +    enable l1 dcache +    gal_low_init: (board/evb64260/sdram_init.S) +	config SDRAM (CFG, TIMING, DECODE) +	init scratch regs (810 + 814) + +	detect DIMM0 (bank 0 only) +	config SDRAM_PARA0 to 256/512Mbit +	bl sdram_op_mode +	detect bank0 width +	    write scratch reg 810 +	config SDRAM_PARA0 with results +	config SDRAM_PARA1 with results + +	detect DIMM1 (bank 2 only) +	config SDRAM_PARA2 to 256/512Mbit +	detect bank2 width +	    write scratch reg 814 +	config SDRAM_PARA2 with results +	config SDRAM_PARA3 with results + +	setup device bus timings/width +	setup boot device timings/width + +	setup CPU_CONF (0x0) +	setup cpu master control register 0x160 +	setup PCI0 TIMEOUT +	setup PCI1 TIMEOUT +	setup PCI0 BAR +	setup PCI1 BAR + +	setup MPP control 0-3 +	setup GPP level control +	setup Serial ports multiplex + +    setup stack pointer (r1) +    setup GOT +    call cpu_init_f +    	debug leds +    board_init_f: (common/board.c) +	board_pre_init: +	    remap gt regs? +	    map PCI mem/io +	    map device space +	    clear out interupts +	init_timebase +	env_init +	serial_init +	console_init_f +	display_options +	initdram: (board/evb64260/evb64260.c) +	    detect memory +	    for each bank: +		dram_size() +		setup PCI slave memory mappings +		setup SCS +   	setup monitor +	alloc board info struct +	init bd struct +	relocate_code: (cpu/mpc7xxx/start.S) +	    copy,got,clearbss +	    board_init_r(bd, dest_addr) (common/board.c) +		setup bd function pointers +		trap_init +		flash_init: (board/evb64260/flash.c) +		setup bd flash info +		cpu_init_r: (cpu/mpc7xxx/cpu_init.c) +		    nothing +		mem_malloc_init +		malloc_bin_reloc +		spi_init (r or f)??? (CFG_ENV_IS_IN_EEPROM) +		env_relocated +		misc_init_r(bd): (board/evb64260/evb64260.c) +		    mpsc_init2 diff --git a/board/evb64260/eth_addrtbl.h b/board/evb64260/eth_addrtbl.h new file mode 100644 index 000000000..60380c63a --- /dev/null +++ b/board/evb64260/eth_addrtbl.h @@ -0,0 +1,84 @@ +#ifndef _ADDRESS_TABLE_H +#define _ADDRESS_TABLE_H 1 + +/* + * ---------------------------------------------------------------------------- + * addressTable.h - this file has all the declarations of the address table + */ + +#define _8K_TABLE                           0 +#define ADDRESS_TABLE_ALIGNMENT             8 +#define HASH_DEFAULT_MODE                   14 +#define HASH_MODE                           13 +#define HASH_SIZE                           12 +#define HOP_NUMBER                          12 +#define MAC_ADDRESS_STRING_SIZE             12 +#define MAC_ENTRY_SIZE                      sizeof(addrTblEntry) +#define MAX_NUMBER_OF_ADDRESSES_TO_STORE    1000 +#define PROMISCUOUS_MODE                    0 +#define SKIP                                1<<1 +#define SKIP_BIT                            1 +#define VALID                               1 + +/* + * ---------------------------------------------------------------------------- + * XXX_MIKE - potential sign-extension bugs lurk here... + */ +#define NIBBLE_SWAPPING_32_BIT(X) ( (((X) & 0xf0f0f0f0) >> 4) \ +                                  | (((X) & 0x0f0f0f0f) << 4) ) + +#define NIBBLE_SWAPPING_16_BIT(X) ( (((X) & 0x0000f0f0) >> 4) \ +                                  | (((X) & 0x00000f0f) << 4) ) + +#define FLIP_4_BITS(X)  ( (((X) & 0x01) << 3) | (((X) & 0x002) << 1) \ +                        | (((X) & 0x04) >> 1) | (((X) & 0x008) >> 3) ) + +#define FLIP_6_BITS(X)  ( (((X) & 0x01) << 5) | (((X) & 0x020) >> 5) \ +                        | (((X) & 0x02) << 3) | (((X) & 0x010) >> 3) \ +                        | (((X) & 0x04) << 1) | (((X) & 0x008) >> 1) ) + +#define FLIP_9_BITS(X)  ( (((X) & 0x01) << 8) | (((X) & 0x100) >> 8) \ +                        | (((X) & 0x02) << 6) | (((X) & 0x080) >> 6) \ +                        | (((X) & 0x04) << 4) | (((X) & 0x040) >> 4) \ +         | ((X) & 0x10) | (((X) & 0x08) << 2) | (((X) & 0x020) >> 2) ) + +/* + * V: value we're operating on + * O: offset of rightmost bit in field + * W: width of field to shift + * S: distance to shift left + */ +#define MASK( fieldWidth )                            ((1 << (fieldWidth)) - 1) +#define leftShiftedBitfield( V,O,W,S)        (((V) & (MASK(W) << (O)))  << (S)) +#define rightShiftedBitfield(V,O,W,S)  (((u32)((V) & (MASK(W) << (O)))) >> (S)) + + +/* + * Push to main memory all cache lines associated with + * the specified range of virtual memory addresses + * + * A: Address of first byte in range to flush + * N: Number of bytes to flush + * Note - flush_dcache_range() does a "sync", does NOT invalidate + */ +#define DCACHE_FLUSH_N_SYNC( A, N )        flush_dcache_range( (A), ((A)+(N)) ) + + + +typedef struct addressTableEntryStruct  { +    u32 hi; +    u32 lo; +} addrTblEntry; + +u32 +uncachedPages( u32 pages  ); +u32 +hashTableFunction( u32 macH, u32 macL, u32 HashSize, u32 hash_mode ); + +unsigned int +initAddressTable( u32 port, u32 hashMode, u32 hashSize ); + +int +addAddressTableEntry( u32 port, u32 macH, u32 macL, u32 rd, u32 skip          ); + +#endif                                           /* #ifndef _ADDRESS_TABLE_H */ diff --git a/board/evb64260/mpsc.h b/board/evb64260/mpsc.h new file mode 100644 index 000000000..54b642a83 --- /dev/null +++ b/board/evb64260/mpsc.h @@ -0,0 +1,142 @@ +/* + * (C) Copyright 2001 + * John Clemens <clemens@mclx.com>, Mission Critical Linux, 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 + */ + +/* + * mpsc.h - header file for MPSC in uart mode (console driver) + */ + +#ifndef __MPSC_H__ +#define __MPSC_H__ + +/* include actual Galileo defines */ +#include <galileo/gt64260R.h> + +/* driver related defines */ + +int mpsc_init(int baud); +void mpsc_init2(void); +char mpsc_getchar(void); +int mpsc_test_char(void); +int galbrg_set_baudrate(int channel, int rate); + +int mpsc_putchar_early(char ch); +extern int (*mpsc_putchar)(char ch); + +#define CHANNEL CONFIG_MPSC_PORT + +#define TX_DESC     5 +#define RX_DESC     20 + +#define DESC_FIRST  0x00010000 +#define DESC_LAST   0x00020000 +#define DESC_OWNER  0x80000000 + +#define TX_DEMAND   0x00800000 +#define TX_STOP     0x00010000 +#define RX_ENABLE   0x00000080 + +#define SDMA_RX_ABORT 		  (1 << 15) +#define SDMA_TX_ABORT 		  (1 << 31) +#define MPSC_TX_ABORT 		  (1 << 7) +#define MPSC_RX_ABORT             (1 << 23) +#define MPSC_ENTER_HUNT           (1 << 31) + +/* MPSC defines */ + +#define GALMPSC_CONNECT            0x1 +#define GALMPSC_DISCONNECT         0x0 + +#define GALMPSC_UART               0x1 + +#define GALMPSC_STOP_BITS_1        0x0 +#define GALMPSC_STOP_BITS_2        0x1 +#define GALMPSC_CHAR_LENGTH_8      0x3 +#define GALMPSC_CHAR_LENGTH_7      0x2 + +#define GALMPSC_PARITY_ODD         0x0 +#define GALMPSC_PARITY_EVEN        0x2 +#define GALMPSC_PARITY_MARK        0x3 +#define GALMPSC_PARITY_SPACE       0x1 +#define GALMPSC_PARITY_NONE        -1 + +#define GALMPSC_SERIAL_MULTIPLEX   SERIAL_PORT_MULTIPLEX           /* 0xf010 */ +#define GALMPSC_ROUTING_REGISTER   MAIN_ROUTING_REGISTER           /* 0xb400 */ +#define GALMPSC_RxC_ROUTE          RECEIVE_CLOCK_ROUTING_REGISTER  /* 0xb404 */ +#define GALMPSC_TxC_ROUTE          TRANSMIT_CLOCK_ROUTING_REGISTER /* 0xb408 */ +#define GALMPSC_MCONF_LOW          MPSC0_MAIN_CONFIGURATION_LOW    /* 0x8000 */ +#define GALMPSC_MCONF_HIGH         MPSC0_MAIN_CONFIGURATION_HIGH   /* 0x8004 */ +#define GALMPSC_PROTOCONF_REG      MPSC0_PROTOCOL_CONFIGURATION    /* 0x8008 */ + +#define GALMPSC_REG_GAP            0x1000 + +#define GALMPSC_MCONF_CHREG_BASE   CHANNEL0_REGISTER1  /* 0x800c */ +#define GALMPSC_CHANNELREG_1       CHANNEL0_REGISTER1  /* 0x800c */ +#define GALMPSC_CHANNELREG_2       CHANNEL0_REGISTER2  /* 0x8010 */ +#define GALMPSC_CHANNELREG_3       CHANNEL0_REGISTER3  /* 0x8014 */ +#define GALMPSC_CHANNELREG_4       CHANNEL0_REGISTER4  /* 0x8018 */ +#define GALMPSC_CHANNELREG_5       CHANNEL0_REGISTER5  /* 0x801c */ +#define GALMPSC_CHANNELREG_6       CHANNEL0_REGISTER6  /* 0x8020 */ +#define GALMPSC_CHANNELREG_7       CHANNEL0_REGISTER7  /* 0x8024 */ +#define GALMPSC_CHANNELREG_8       CHANNEL0_REGISTER8  /* 0x8028 */ +#define GALMPSC_CHANNELREG_9       CHANNEL0_REGISTER9  /* 0x802c */ +#define GALMPSC_CHANNELREG_10      CHANNEL0_REGISTER10 /* 0x8030 */ +#define GALMPSC_CHANNELREG_11      CHANNEL0_REGISTER11 /* 0x8034 */ + +#define GALSDMA_COMMAND_FIRST     (1 << 16) +#define GALSDMA_COMMAND_LAST      (1 << 17) +#define GALSDMA_COMMAND_ENABLEINT (1 << 23) +#define GALSDMA_COMMAND_AUTO      (1 << 30) +#define GALSDMA_COMMAND_OWNER     (1 << 31) + +#define GALSDMA_RX                 0 +#define GALSDMA_TX                 1 + +/* CHANNEL2 should be CHANNEL1, according to documentation, + * but to work with the current GTREGS file... + */ +#define GALSDMA_0_CONF_REG         CHANNEL0_CONFIGURATION_REGISTER   /* 0x4000 */ +#define GALSDMA_1_CONF_REG         CHANNEL2_CONFIGURATION_REGISTER   /* 0x6000 */ +#define GALSDMA_0_COM_REG          CHANNEL0_COMMAND_REGISTER         /* 0x4008 */ +#define GALSDMA_1_COM_REG          CHANNEL2_COMMAND_REGISTER         /* 0x6008 */ +#define GALSDMA_0_CUR_RX_PTR       CHANNEL0_CURRENT_RX_DESCRIPTOR_POINTER  /* 0x4810 */ +#define GALSDMA_0_CUR_TX_PTR       CHANNEL0_CURRENT_TX_DESCRIPTOR_POINTER  /* 0x4c10 */ +#define GALSDMA_0_FIR_TX_PTR       CHANNEL0_FIRST_TX_DESCRIPTOR_POINTER    /* 0x4c14 */ +#define GALSDMA_1_CUR_RX_PTR       CHANNEL2_CURRENT_RX_DESCRIPTOR_POINTER  /* 0x6810 */ +#define GALSDMA_1_CUR_TX_PTR       CHANNEL2_CURRENT_TX_DESCRIPTOR_POINTER  /* 0x6c10 */ +#define GALSDMA_1_FIR_TX_PTR       CHANNEL2_FIRST_TX_DESCRIPTOR_POINTER    /* 0x6c14 */ +#define GALSDMA_REG_DIFF           0x2000 + +/* WRONG in gt64260R.h */ +#define GALSDMA_INT_CAUSE          0xb800   /* SDMA_CAUSE */ +#define GALSDMA_INT_MASK           0xb880   /* SDMA_MASK  */ + +#define GALSDMA_MODE_UART          0 +#define GALSDMA_MODE_BISYNC        1 +#define GALSDMA_MODE_HDLC          2 +#define GALSDMA_MODE_TRANSPARENT   3 + +#define GALBRG_0_CONFREG           BRG0_CONFIGURATION_REGISTER  /*  0xb200  */ +#define GALBRG_REG_GAP             0x0008 +#define GALBRG_0_BTREG             BRG0_BAUDE_TUNING_REGISTER   /*  0xb204  */ + +#endif /* __MPSC_H__ */ diff --git a/board/evb64260/serial.h b/board/evb64260/serial.h new file mode 100644 index 000000000..bac925385 --- /dev/null +++ b/board/evb64260/serial.h @@ -0,0 +1,63 @@ +/* serial.h - mostly useful for DUART serial_init in serial.c */ + +#ifndef __SERIAL_H__ +#define __SERIAL_H__ + +#if 0 + +#define B230400         1 +#define B115200         2 +#define B57600          4 +#define B38400          82 +#define B19200          163 +#define B9600           24 +#define B4800           651 +#define B2400           1302 +#define B1200           2604 +#define B600            5208 +#define B300            10417 +#define B150            20833 +#define B110            28409 +#define BDEFAULT        B115200 + +				/* this stuff is important to initialize +				the DUART channels */ + +#define	Scale		0x01L		/* distance between port addresses */ +#define	COM1		0x000003f8		/* Keyboard */ +#define COM2		0x000002f8		/* Host */ + + +/* Port Definitions relative to base COM port addresses */ +#define DataIn	(0x00*Scale)	/* data input port */ +#define DataOut	(0x00*Scale)	/* data output port */ +#define BaudLsb	(0x00*Scale)	/* baud rate divisor least significant byte */ +#define BaudMsb	(0x01*Scale)	/* baud rate divisor most significant byte */ +#define	Ier	(0x01*Scale)	/* interrupt enable register */ +#define	Iir	(0x02*Scale)	/* interrupt identification register */ +#define	Lcr	(0x03*Scale)	/* line control register */ +#define	Mcr	(0x04*Scale)	/* modem control register */ +#define	Lsr	(0x05*Scale)	/* line status register */ +#define	Msr	(0x06*Scale)	/* modem status register */ + +/* Bit Definitions for above ports */ +#define LcrDlab	0x80	/* b7:	 enable baud rate divisor registers */ +#define	LcrDflt	0x03	/* b6-0: no parity, 1 stop, 8 data */ + +#define	McrRts	0x02	/* b1:	request to send (I am ready to xmit) */ +#define	McrDtr	0x01	/* b0:	data terminal ready (I am alive ready to rcv) */ +#define	McrDflt	(McrRts|McrDtr) + +#define LsrTxD	0x6000	/* b5: transmit holding register empty (i.e. xmit OK!)*/ +			/* b6: transmitter empty */ +#define LsrRxD	0x0100	/* b0: received data ready (i.e. got a byte!) */ + +#define	MsrRi	0x0040	/* b6: ring indicator (other guy is ready to rcv) */ +#define	MsrDsr	0x0020	/* b5: data set ready (other guy is alive ready to rcv */ +#define	MsrCts	0x0010	/* b4: clear to send (other guy is ready to rcv) */ + +#define IerRda	0xf	/* b0: Enable received data available interrupt */ + +#endif + +#endif /* __SERIAL_H__ */ diff --git a/board/flagadm/Makefile b/board/flagadm/Makefile new file mode 100644 index 000000000..35b84288d --- /dev/null +++ b/board/flagadm/Makefile @@ -0,0 +1,40 @@ +# +# (C) Copyright 2001 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# 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 +# + +include $(TOPDIR)/config.mk + +LIB	= lib$(BOARD).a + +OBJS	= $(BOARD).o flash.o + +$(LIB):	.depend $(OBJS) +	$(AR) crv $@ $^ + +######################################################################### + +.depend:	Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) +		$(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ + +sinclude .depend + +######################################################################### diff --git a/board/flagadm/u-boot.lds b/board/flagadm/u-boot.lds new file mode 100644 index 000000000..3484e85ce --- /dev/null +++ b/board/flagadm/u-boot.lds @@ -0,0 +1,122 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * 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 + */ + +OUTPUT_ARCH(powerpc) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); +/* Do we need any of these for elf? +   __DYNAMIC = 0;    */ +SECTIONS +{ +  /* Read-only sections, merged into text segment: */ +  . = + SIZEOF_HEADERS; +  .interp : { *(.interp) } +  .hash          : { *(.hash)		} +  .dynsym        : { *(.dynsym)		} +  .dynstr        : { *(.dynstr)		} +  .rel.text      : { *(.rel.text)		} +  .rela.text     : { *(.rela.text) 	} +  .rel.data      : { *(.rel.data)		} +  .rela.data     : { *(.rela.data) 	} +  .rel.rodata    : { *(.rel.rodata) 	} +  .rela.rodata   : { *(.rela.rodata) 	} +  .rel.got       : { *(.rel.got)		} +  .rela.got      : { *(.rela.got)		} +  .rel.ctors     : { *(.rel.ctors)	} +  .rela.ctors    : { *(.rela.ctors)	} +  .rel.dtors     : { *(.rel.dtors)	} +  .rela.dtors    : { *(.rela.dtors)	} +  .rel.bss       : { *(.rel.bss)		} +  .rela.bss      : { *(.rela.bss)		} +  .rel.plt       : { *(.rel.plt)		} +  .rela.plt      : { *(.rela.plt)		} +  .init          : { *(.init)	} +  .plt : { *(.plt) } +  .text      : +  { +    cpu/mpc8xx/start.o	(.text) + +    *(.text) +    *(.fixup) +    *(.got1) +  } +  _etext = .; +  PROVIDE (etext = .); +  .rodata    : +  { +    *(.rodata) +    *(.rodata1) +  } +  .fini      : { *(.fini)    } =0 +  .ctors     : { *(.ctors)   } +  .dtors     : { *(.dtors)   } + +  /* Read-write section, merged into data segment: */ +  . = (. + 0x00FF) & 0xFFFFFF00; +  _erotext = .; +  PROVIDE (erotext = .); +  .reloc   : +  { +    *(.got) +    _GOT2_TABLE_ = .; +    *(.got2) +    _FIXUP_TABLE_ = .; +    *(.fixup) +  } +  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; +  __fixup_entries = (. - _FIXUP_TABLE_)>>2; + +  .data    : +  { +    *(.data) +    *(.data1) +    *(.sdata) +    *(.sdata2) +    *(.dynamic) +    CONSTRUCTORS +  } +  _edata  =  .; +  PROVIDE (edata = .); + +  __start___ex_table = .; +  __ex_table : { *(__ex_table) } +  __stop___ex_table = .; + +  . = ALIGN(256); +  __init_begin = .; +  .text.init : { *(.text.init) } +  .data.init : { *(.data.init) } +  . = ALIGN(256); +  __init_end = .; + +  __bss_start = .; +  .bss       : +  { +   *(.sbss) *(.scommon) +   *(.dynbss) +   *(.bss) +   *(COMMON) +  } +  _end = . ; +  PROVIDE (end = .); +} + diff --git a/board/gth/ee_access.h b/board/gth/ee_access.h new file mode 100644 index 000000000..e847f2c58 --- /dev/null +++ b/board/gth/ee_access.h @@ -0,0 +1,16 @@ +/* By Thomas.Lange@Corelatus.com 001025 + +   Definitions for EEPROM/VOLT METER  DS2438 */ + +#ifndef INCeeaccessh +#define INCeeaccessh + +int ee_do_command( u8 *Tx, int Tx_len, u8 *Rx, int Rx_len, int Send_skip ); +int ee_init_data(void); +int ee_crc_ok( u8 *Buffer, int Len, u8 Crc ); + +#ifndef TRUE +#define TRUE 1 +#endif + +#endif /* INCeeaccessh */ diff --git a/board/gth/ee_dev.h b/board/gth/ee_dev.h new file mode 100644 index 000000000..417c7b675 --- /dev/null +++ b/board/gth/ee_dev.h @@ -0,0 +1,85 @@ +/* By Thomas.Lange@Corelatus.com 001025 +   $Revision: 1.6 $ + +   Definitions for EEPROM/VOLT METER  DS2438 +   Copyright (C) 2000-2001 Corelatus AB */ + +#ifndef INCeedevh +#define INCeedevh + +#define E_DEBUG(fmt,args...) if( Debug ) printk(KERN_DEBUG"EE: " fmt, ##args) + +#define PORT_B_PAR ((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbpar +#define PORT_B_ODR ((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbodr +#define PORT_B_DIR ((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbdir +#define PORT_B_DAT ((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbdat + +#define SET_PORT_B_INPUT(Mask)  PORT_B_DIR &= ~(Mask) +#define SET_PORT_B_OUTPUT(Mask) PORT_B_DIR |= Mask + +#define WRITE_PORT_B(Mask,Value) { \ +			if (Value) PORT_B_DAT |= Mask; \ +			else PORT_B_DAT &= ~(Mask); \ +		} +#define WRITE_PORT(Value) WRITE_PORT_B(PB_EEPROM,Value) + +#define READ_PORT (PORT_B_DAT&PB_EEPROM) + +/* 64 bytes chip */ +#define EE_CHIP_SIZE 64 + +/* We use this resistor for measuring the current drain on 3.3V */ +#define CURRENT_RESISTOR 0.022 + +/* microsecs +   Pull line down at least this long for reset pulse */ +#define RESET_LOW_TIME    490 + +/* Read presence pulse after we release reset pulse */ +#define PRESENCE_TIMEOUT  100 +#define PRESENCE_LOW_TIME 200 + +#define WRITE_0_LOW 80 +#define WRITE_1_LOW 2 +#define TOTAL_WRITE_LOW 80 + +#define READ_LOW        2 +#define READ_TIMEOUT   10 +#define TOTAL_READ_LOW 80 + +/*** Rom function commands ***/ +#define READ_ROM   0x33 +#define MATCH_ROM  0x55 +#define SKIP_ROM   0xCC +#define SEARCH_ROM 0xF0 + + +/*** Memory_command_function ***/ +#define WRITE_SCRATCHPAD 0x4E +#define READ_SCRATCHPAD  0xBE +#define COPY_SCRATCHPAD  0x48 +#define RECALL_MEMORY    0xB8 +#define CONVERT_TEMP     0x44 +#define CONVERT_VOLTAGE  0xB4 + +/* Chip is divided in 8 pages, 8 bytes each */ + +#define EE_PAGE_SIZE 8 + +/* All chip data we want are in page 0 */ + +/* Bytes in page 0 */ +#define EE_P0_STATUS   0 +#define EE_P0_TEMP_LSB 1 +#define EE_P0_TEMP_MSB 2 +#define EE_P0_VOLT_LSB 3 +#define EE_P0_VOLT_MSB 4 +#define EE_P0_CURRENT_LSB 5 +#define EE_P0_CURRENT_MSB 6 + + +/* 40 byte user data is located at page 3-7 */ +#define EE_USER_PAGE_0 3 +#define USER_PAGES 5 + +#endif /* INCeedevh */ diff --git a/board/iphase4539/Makefile b/board/iphase4539/Makefile new file mode 100644 index 000000000..5fcce6f68 --- /dev/null +++ b/board/iphase4539/Makefile @@ -0,0 +1,45 @@ +# +# (C) Copyright 2002 Wolfgang Grandegger <wg@denx.de> +# +# 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 +# + +include $(TOPDIR)/config.mk + +LIB	= lib$(BOARD).a + +OBJS	:= $(BOARD).o flash.o + +$(LIB):	$(OBJS) $(SOBJS) +	$(AR) crv $@ $^ + +clean: +	rm -f $(SOBJS) $(OBJS) + +distclean:	clean +	rm -f $(LIB) core *.bak .depend + +######################################################################### + +.depend:	Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) +		$(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ + +-include .depend + +######################################################################### diff --git a/board/mpc8260ads/Makefile b/board/mpc8260ads/Makefile new file mode 100644 index 000000000..9280bf7d6 --- /dev/null +++ b/board/mpc8260ads/Makefile @@ -0,0 +1,46 @@ +# +# (C) Copyright 2001 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# 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 +# + +include $(TOPDIR)/config.mk + +LIB	= lib$(BOARD).a + +OBJS	:= $(BOARD).o flash.o + +$(LIB):	$(OBJS) $(SOBJS) +	$(AR) crv $@ $^ + +clean: +	rm -f $(SOBJS) $(OBJS) + +distclean:	clean +	rm -f $(LIB) core *.bak .depend + +######################################################################### + +.depend:	Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) +		$(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ + +-include .depend + +######################################################################### diff --git a/board/mpl/common/isa.h b/board/mpl/common/isa.h new file mode 100644 index 000000000..66dd2c980 --- /dev/null +++ b/board/mpl/common/isa.h @@ -0,0 +1,56 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland, d.peter@mpl.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, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _PIP405_ISA_H_ +#define _PIP405_ISA_H_ +/* Super IO */ +#define SIO_CFG_PORT	0x3F0	/* Config Port Address */ + + + +/* table fore SIO initialization */ +typedef struct { +	const uchar index; +	const uchar val; +} SIO_LOGDEV_TABLE; + +typedef struct { +	const uchar ldev; +	const SIO_LOGDEV_TABLE *ldev_table; +} SIO_TABLE; + + + + +unsigned char open_cfg_super_IO(int address); +unsigned char read_cfg_super_IO(int address, unsigned char function, unsigned char regaddr); +void write_cfg_super_IO(int address, unsigned char function, unsigned char regaddr, unsigned char data); +void close_cfg_super_IO(int address); +void isa_sio_setup(void); +void isa_sio_setup(void); +void isa_irq_install_handler(int vec, interrupt_handler_t *handler, void *arg); +void isa_irq_free_handler(int vec); +int handle_isa_int(void); + + +#endif diff --git a/board/mpl/common/kbd.h b/board/mpl/common/kbd.h new file mode 100644 index 000000000..229ba615f --- /dev/null +++ b/board/mpl/common/kbd.h @@ -0,0 +1,35 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland, d.peter@mpl.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, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + +#ifndef _KBD_H_ +#define _KBD_H_ + +extern int kbd_testc(void); +extern int kbd_getc(void); +extern void kbd_interrupt(void); +extern char *kbd_initialize(void); + +unsigned char kbd_is_init(void); +#define KBD_INTERRUPT 1 +#endif diff --git a/board/mpl/common/usb_uhci.h b/board/mpl/common/usb_uhci.h new file mode 100644 index 000000000..8c8f1615e --- /dev/null +++ b/board/mpl/common/usb_uhci.h @@ -0,0 +1,190 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland + * + * 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 + * + * Note: Part of this code has been derived from linux + * + */ +#ifndef _USB_UHCI_H_ +#define _USB_UHCI_H_ + + +/* Command register */ +#define USBCMD		0 +#define   USBCMD_RS       0x0001	/* Run/Stop */ +#define   USBCMD_HCRESET  0x0002	/* Host reset */ +#define   USBCMD_GRESET   0x0004	/* Global reset */ +#define   USBCMD_EGSM     0x0008	/* Global Suspend Mode */ +#define   USBCMD_FGR      0x0010	/* Force Global Resume */ +#define   USBCMD_SWDBG    0x0020	/* SW Debug mode */ +#define   USBCMD_CF       0x0040	/* Config Flag (sw only) */ +#define   USBCMD_MAXP     0x0080	/* Max Packet (0 = 32, 1 = 64) */ + +/* Status register */ +#define USBSTS		2 +#define   USBSTS_USBINT   0x0001	/* Interrupt due to IOC */ +#define   USBSTS_ERROR    0x0002	/* Interrupt due to error */ +#define   USBSTS_RD       0x0004	/* Resume Detect */ +#define   USBSTS_HSE      0x0008	/* Host System Error - basically PCI problems */ +#define   USBSTS_HCPE     0x0010	/* Host Controller Process Error - the scripts were buggy */ +#define   USBSTS_HCH      0x0020	/* HC Halted */ + +/* Interrupt enable register */ +#define USBINTR		4 +#define   USBINTR_TIMEOUT 0x0001	/* Timeout/CRC error enable */ +#define   USBINTR_RESUME  0x0002	/* Resume interrupt enable */ +#define   USBINTR_IOC     0x0004	/* Interrupt On Complete enable */ +#define   USBINTR_SP      0x0008	/* Short packet interrupt enable */ + +#define USBFRNUM      6 +#define USBFLBASEADD  8 +#define USBSOF        12 + +/* USB port status and control registers */ +#define USBPORTSC1	16 +#define USBPORTSC2	18 +#define   USBPORTSC_CCS   0x0001	/* Current Connect Status ("device present") */ +#define   USBPORTSC_CSC   0x0002	/* Connect Status Change */ +#define   USBPORTSC_PE    0x0004	/* Port Enable */ +#define   USBPORTSC_PEC   0x0008	/* Port Enable Change */ +#define   USBPORTSC_LS    0x0030	/* Line Status */ +#define   USBPORTSC_RD    0x0040	/* Resume Detect */ +#define   USBPORTSC_LSDA  0x0100	/* Low Speed Device Attached */ +#define   USBPORTSC_PR    0x0200	/* Port Reset */ +#define   USBPORTSC_SUSP  0x1000	/* Suspend */ + +/* Legacy support register */ +#define USBLEGSUP 0xc0 +#define USBLEGSUP_DEFAULT 0x2000	/* only PIRQ enable set */ + +#define UHCI_NULL_DATA_SIZE 0x7ff	/* for UHCI controller TD */ +#define UHCI_PID            0xff	/* PID MASK */ + +#define UHCI_PTR_BITS       0x000F +#define UHCI_PTR_TERM       0x0001 +#define UHCI_PTR_QH         0x0002 +#define UHCI_PTR_DEPTH      0x0004 + +/* for TD <status>: */ +#define TD_CTRL_SPD         (1 << 29)	/* Short Packet Detect */ +#define TD_CTRL_C_ERR_MASK  (3 << 27)	/* Error Counter bits */ +#define TD_CTRL_LS          (1 << 26)	/* Low Speed Device */ +#define TD_CTRL_IOS         (1 << 25)	/* Isochronous Select */ +#define TD_CTRL_IOC         (1 << 24)	/* Interrupt on Complete */ +#define TD_CTRL_ACTIVE      (1 << 23)	/* TD Active */ +#define TD_CTRL_STALLED     (1 << 22)	/* TD Stalled */ +#define TD_CTRL_DBUFERR     (1 << 21)	/* Data Buffer Error */ +#define TD_CTRL_BABBLE      (1 << 20)	/* Babble Detected */ +#define TD_CTRL_NAK         (1 << 19)	/* NAK Received */ +#define TD_CTRL_CRCTIMEO    (1 << 18)	/* CRC/Time Out Error */ +#define TD_CTRL_BITSTUFF    (1 << 17)	/* Bit Stuff Error */ +#define TD_CTRL_ACTLEN_MASK 0x7ff	/* actual length, encoded as n - 1 */ + +#define TD_CTRL_ANY_ERROR	(TD_CTRL_STALLED | TD_CTRL_DBUFERR | \ +				 TD_CTRL_BABBLE | TD_CTRL_CRCTIME | TD_CTRL_BITSTUFF) + +#define TD_TOKEN_TOGGLE		19 + +/* ------------------------------------------------------------------------------------ +   Virtual Root HUB +   ------------------------------------------------------------------------------------ */ +/* destination of request */ +#define RH_INTERFACE               0x01 +#define RH_ENDPOINT                0x02 +#define RH_OTHER                   0x03 + +#define RH_CLASS                   0x20 +#define RH_VENDOR                  0x40 + +/* Requests: bRequest << 8 | bmRequestType */ +#define RH_GET_STATUS           0x0080 +#define RH_CLEAR_FEATURE        0x0100 +#define RH_SET_FEATURE          0x0300 +#define RH_SET_ADDRESS          0x0500 +#define RH_GET_DESCRIPTOR       0x0680 +#define RH_SET_DESCRIPTOR       0x0700 +#define RH_GET_CONFIGURATION    0x0880 +#define RH_SET_CONFIGURATION    0x0900 +#define RH_GET_STATE            0x0280 +#define RH_GET_INTERFACE        0x0A80 +#define RH_SET_INTERFACE        0x0B00 +#define RH_SYNC_FRAME           0x0C80 +/* Our Vendor Specific Request */ +#define RH_SET_EP               0x2000 + +/* Hub port features */ +#define RH_PORT_CONNECTION         0x00 +#define RH_PORT_ENABLE             0x01 +#define RH_PORT_SUSPEND            0x02 +#define RH_PORT_OVER_CURRENT       0x03 +#define RH_PORT_RESET              0x04 +#define RH_PORT_POWER              0x08 +#define RH_PORT_LOW_SPEED          0x09 +#define RH_C_PORT_CONNECTION       0x10 +#define RH_C_PORT_ENABLE           0x11 +#define RH_C_PORT_SUSPEND          0x12 +#define RH_C_PORT_OVER_CURRENT     0x13 +#define RH_C_PORT_RESET            0x14 + +/* Hub features */ +#define RH_C_HUB_LOCAL_POWER       0x00 +#define RH_C_HUB_OVER_CURRENT      0x01 + +#define RH_DEVICE_REMOTE_WAKEUP    0x00 +#define RH_ENDPOINT_STALL          0x01 + +/* Our Vendor Specific feature */ +#define RH_REMOVE_EP               0x00 + + +#define RH_ACK                     0x01 +#define RH_REQ_ERR                 -1 +#define RH_NACK                    0x00 + + +/* Transfer descriptor structure */ +typedef struct { +	unsigned long link;     /* next td/qh (LE)*/ +	unsigned long status;   /* status of the td */ +	unsigned long info;     /* Max Lenght / Endpoint / device address and PID */ +	unsigned long buffer;   /* pointer to data buffer (LE) */ +	unsigned long dev_ptr;  /* pointer to the assigned device (BE) */ +	unsigned long res[3];   /* reserved (TDs must be 8Byte aligned) */ +} uhci_td_t, *puhci_td_t; + +/* Queue Header structure */ +typedef struct { +	unsigned long head;       /* Next QH (LE)*/ +	unsigned long element;		/* Queue element pointer (LE) */ +	unsigned long res[5];     /* reserved */ +	unsigned long dev_ptr;    /* if 0 no tds have been assigned to this qh */ +} uhci_qh_t, *puhci_qh_t; + +struct virt_root_hub { +	int devnum;		            /* Address of Root Hub endpoint */ +	int numports;             /* number of ports */ +	int c_p_r[8];             /* C_PORT_RESET */ +}; + + +#endif /* _USB_UHCI_H_ */ + + diff --git a/board/mpl/common/vga_table.h b/board/mpl/common/vga_table.h new file mode 100644 index 000000000..5e7db8ace --- /dev/null +++ b/board/mpl/common/vga_table.h @@ -0,0 +1,5115 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG, d.peter@mpl.ch. + * + * 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 + * + * Note: Parts of these software are imported from + *       - UBL, The Universal Talkware Boot Loader + *         Copyright (C) 2000 Universal Talkware Inc. + *       - Linux + * + * File: vga_table.c + * + * contains all tables (include fonts) for the vga controller. + * + **********************************************/ +#ifndef _VGA_TABLE_H +#define _VGA_TABLE_H + +/* table for VGA Initialization  */ +typedef struct { +	const unsigned char reg; +	const unsigned char val; +} VIDEO_CFG_TABLE; + +/* Attribute table */ +static VIDEO_CFG_TABLE attr[] = { +	{ 0x00, 0x00 }, /* black */ +	{ 0x01, 0x01 }, /* blue */ +	{ 0x02, 0x02 },	/* green */ +	{ 0x03, 0x03 },	/* cyan */ +	{ 0x04, 0x04 },	/* red */ +	{ 0x05, 0x05 }, /* magenta */ +	{ 0x06, 0x14 },	/* brown */ +	{ 0x07, 0x07 },	/* white */ +	{ 0x08, 0x38 },	/* dark gray */ +	{ 0x09, 0x39 },	/* light blue */ +	{ 0x0A, 0x3A },	/* light green */ +	{ 0x0B, 0x3B },	/* light Cyan */ +	{ 0x0C, 0x3C },	/* light red */ +	{ 0x0D, 0x3D },	/* light magenta */ +	{ 0x0E, 0x3E }, /* yellow */ +	{ 0x0F, 0x3F },	/* intense white */ +	{ 0x10, 0x0C }, /* mode control */ +	{ 0x11, 0x00 },	/* overscan color */ +	{ 0x12, 0x0f },	/* color plane enable */ +	{ 0x13, 0x08 }, /* horizontal Pel Panning */ +	{ 0x14, 0x00 }, /* color select */ +	{ 0xFF, 0xFF}		/* end of table */ +}; + +/* Values for VGA 80 x 25 Text mode */ +static VIDEO_CFG_TABLE crtc[] = { +	{0x00,0x5F},	/* horizontal total */ +	{0x01,0x4F},	/* horizontal displayed */ +	{0x02,0x50},	/* horizontal blank start */ +	{0x03,0x82},	/* horizontal blank end MIP520 BIOS*/ +	{0x04,0x55},	/* horizontal synch pos  MIP520 */ +	{0x05,0x9F},	/* horizontal synch width BIOS Source */ +	{0x06,0xBF},	/* vertical total BIOS MIP520*/ +	{0x07,0x1F},	/* overflow */ +	{0x08,0x00},	/* prescan  */ +	{0x09,0x4F},	/* maximum scanline */ +	{0x0A,0x0D},	/* cursor start */ +	{0x0B,0x0E},	/* cursor end */ +	{0x0C,0x00},	/* start address high byte */ +	{0x0D,0x00},	/* start address low byte */ +	{0x0E,0x07},	/* cursor location high byte */ +	{0x0F,0x80},	/* cursor location low byte */ +	{0x10,0x9C},	/* vertical synch start BIOS MIP520*/ +	{0x11,0x8E},	/* vertical synch end */ +	{0x12,0x8F},	/* vertical display enable end BIOS MIP520 */ +	{0x13,0x28},	/* offset */ +	{0x14,0x1F},	/* underline row */ +	{0x15,0x96},	/* verical blank start */ +	{0x16,0xB9},	/* verical blank end */ +	{0x17,0xA3},	/* crt Mode Control */ +	{0x18,0xFF},	/* line compare */ +	/* added for 69000 */ +	{0x22,0x20},	/* Memory Latch */ +	{0x30,0x00},	/* ext. total vertical register */ +	{0x31,0x00},	/* ext. vertical display end */ +	{0x32,0x00},	/* ext. vertical synch */ +	{0x33,0x00},	/* ext. vertical blanking start */ +	{0x38,0x00},	/* ext. total horizontal register */ +	{0x3C,0x00},	/* ext. horizontal blanking end */ +	{0x40,0x00},	/* ext. start address */ +	{0x41,0x00},	/* ext. offset */ +	{0x70,0x4F},	/* interlace control register */ +	{0x71,0x00},	/* NTSC/PAL Video Output Control */ +	{0x72,0x00},	/* NTSC/PAL horizontal serration 1 start */ +	{0x73,0x00},	/* NTSC/PAL horizontal serration 2 start */ +	{0x74,0x00},	/* NTSC/PAL horizontal pulse width */ +	{0x75,0x00},	/* NTSC/PAL filtering burst read length */ +	{0x76,0x00},	/* NTSC/PAL filtering burst read quantity */ +	{0x77,0x00},	/* NTSC/PAL Filtering Control */ +	{0x78,0x00},	/* NTSC/PAL Vertical reduction */ +	{0x79,0x00},	/* NTSC/PAL horizontal total fine adjust */ +	{0xFF,0xFF}		/* end of table */ +}; + +static VIDEO_CFG_TABLE grmr[] = { +	{0x00,0x00},	/* all planes are reset */ +	{0x01,0x00},	/* no special altering of plane */ +	{0x02,0x00},	/* color compare */ +	{0x03,0x00},	/* data rotate */ +	{0x04,0x00},	/* read plane 0 */ +	{0x05,0x10},	/* Mode */ +	{0x06,0x0E},	/* misc */ +	{0x07,0x00},	/* Color */ +	{0x08,0xFF},	/* Bitmask */ +	{0xFF,0xFF}		/* end of table */ +}; + + +static VIDEO_CFG_TABLE seq[] = { +	{0x00,0x03},	/* release the resets */ +	{0x01,0x00},	/* clocking mode */ +	{0x02,0x03},	/* enable plane 0,1 access */ +	{0x03,0x00},	/* character map */ +	{0x04,0x02},	/* Memory mode */ +	{0x07,0x00},	/* Reset Counter */ +	{0xFF,0xFF}		/* end of table */ +}; + +static VIDEO_CFG_TABLE xreg[] = { + +	{ 0x0A, 0x00 }, /* Frame Buffer Mapping */ +	{ 0x0B, 0x01 }, /* PCI Write Burst support */ +	{ 0x0E, 0x00 },	/* Frame buffer Page select */ +	{ 0x20, 0x00 }, /* BitBLT Configuration */ +	/*	{ 0x40, 0x03 }, */ /* Memory Access Control */ +	{ 0x40, 0x00 }, /* Memory Access Control */ +	{ 0x60, 0x00 },	/* Video Pin Control */ +	{ 0x61, 0x00 },	/* DPMS Synch control */ +	{ 0x62, 0x00 },	/* GPIO Pin Control */ +	{ 0x63, 0xBD },	/* GPIO Pin Data*/ +	{ 0x67, 0x00 },	/* Pin Tri-State */ +	{ 0x80, 0x00 },	/* Pixel Pipeline Config 0 register */ +	{ 0x81, 0x00 },	/* Pixel Pipeline Config 1 register */ +	{ 0x82, 0x00 },	/* Pixel Pipeline Config 2 register */ +	{ 0xA0, 0x00 },	/* Cursor 1 Control Reg */ +	{ 0xA1, 0x00 },	/* Cursor 1 Vertical Extension Reg */ +	{ 0xA2, 0x00 },	/* Cursor 1 Base Address Low */ +	{ 0xA3, 0x00 },	/* Cursor 1 Base Address High */ +	{ 0xA4, 0x00 },	/* Cursor 1 X-Position Low */ +	{ 0xA5, 0x00 },	/* Cursor 1 X-Position High */ +	{ 0xA6, 0x00 },	/* Cursor 1 Y-Position Low */ +	{ 0xA7, 0x00 },	/* Cursor 1 Y-Position High */ +	{ 0xA8, 0x00 },	/* Cursor 2 Control Reg */ +	{ 0xA9, 0x00 },	/* Cursor 2 Vertical Extension Reg */ +	{ 0xAA, 0x00 },	/* Cursor 2 Base Address Low */ +	{ 0xAB, 0x00 },	/* Cursor 2 Base Address High */ +	{ 0xAC, 0x00 },	/* Cursor 2 X-Position Low */ +	{ 0xAD, 0x00 },	/* Cursor 2 X-Position High */ +	{ 0xAE, 0x00 },	/* Cursor 2 Y-Position Low */ +	{ 0xAF, 0x00 },	/* Cursor 2 Y-Position High */ +	{ 0xC0, 0x7D },	/* Dot Clock 0 VCO M-Divisor */ +	{ 0xC1, 0x07 },	/* Dot Clock 0 VCO N-Divisor */ +	{ 0xC3, 0x34 },	/* Dot Clock 0 Divisor select */ +	{ 0xC4, 0x55 },	/* Dot Clock 1 VCO M-Divisor */ +	{ 0xC5, 0x09 },	/* Dot Clock 1 VCO N-Divisor */ +	{ 0xC7, 0x24 },	/* Dot Clock 1 Divisor select */ +	{ 0xC8, 0x7D },	/* Dot Clock 2 VCO M-Divisor */ +	{ 0xC9, 0x07 },	/* Dot Clock 2 VCO N-Divisor */ +	{ 0xCB, 0x34 },	/* Dot Clock 2 Divisor select */ +	{ 0xCC, 0x38 },	/* Memory Clock 0 VCO M-Divisor */ +	{ 0xCD, 0x03 },	/* Memory Clock 0 VCO N-Divisor */ +	{ 0xCE, 0x90 },	/* Memory Clock 0 Divisor select */ +	{ 0xCF, 0x06 },	/* Clock Config */ +	{ 0xD0, 0x0F },	/* Power Down */ +	{ 0xD1, 0x01 },	/* Power Down BitBLT */ +	/*	{ 0xD2, 0x0F }, */  /* 2KHz Counter Power Down  */ +	{ 0xFF, 0xFF}			/* end of table */ +}; +/* Clock Config: + * If Loop Divisor = 1 + *   Fvco = (Fref * M/N) + *	 Fout = Fvco / Post Divisor + * Dot Clk0: + * --------- + * M  = (M Div + 2) = 127 + * N  = (N Div + 2) = 9 + * Post Divisor =     8 + * Loop Divisor =     1 + * Fref = 14.31818MHz => Fvco 202.045MHz => Dot Clock 0 = 25.25MHz + * + * Dot Clk1: + * --------- + * M  = (M Div + 2) = 57 + * N  = (N Div + 2) = 11 + * Post Divisor =     4 + * Loop Divisor =     1 + * Fref = 14.31818MHz => Fvco 113.24MHz => Dot Clock 1 = 28.31MHz + * + * Dot Clk2: + * --------- + * M  = (M Div + 2) = 127 + * N  = (N Div + 2) = 9 + * Post Divisor =     8 + * Loop Divisor =     1 + * Fref = 14.31818MHz => Fvco 202.045MHz => Dot Clock 2 = 25.25MHz + * + * Memory Clk: + * ----------- + * M  = (M Div + 2) = 58 + * N  = (N Div + 2) = 5 + * Post Divisor =     2 + * Fref = 14.31818MHz => Fvco 166MHz => Dot Clock 1 = 83MHz + * + */ + + + +/* DAC datas */ +static unsigned char dac[][3] = { +  {0x00, 0x00, 0x00}, /* Index  0 (00) */ +  {0x00, 0x00, 0x2A}, /* Index  1 (01) */ +  {0x00, 0x2A, 0x00}, /* Index  2 (02) */ +  {0x00, 0x2A, 0x2A}, /* Index  3 (03) */ +  {0x2A, 0x00, 0x00}, /* Index  4 (04) */ +  {0x2A, 0x00, 0x2A}, /* Index  5 (05) */ +  {0x2A, 0x2A, 0x00}, /* Index  6 (06) */ +  {0x2A, 0x2A, 0x2A}, /* Index  7 (07) */ +  {0x00, 0x00, 0x15}, /* Index  8 (08) */ +  {0x00, 0x00, 0x3F}, /* Index  9 (09) */ +  {0x00, 0x2A, 0x15}, /* Index 10 (0A) */ +  {0x00, 0x2A, 0x3F}, /* Index 11 (0B) */ +  {0x2A, 0x00, 0x15}, /* Index 12 (0C) */ +  {0x2A, 0x00, 0x3F}, /* Index 13 (0D) */ +  {0x2A, 0x2A, 0x15}, /* Index 14 (0E) */ +  {0x2A, 0x2A, 0x3F}, /* Index 15 (0F) */ +  {0x00, 0x15, 0x00}, /* Index 16 (10) */ +  {0x00, 0x15, 0x2A}, /* Index 17 (11) */ +  {0x00, 0x3F, 0x00}, /* Index 18 (12) */ +  {0x00, 0x3F, 0x2A}, /* Index 19 (13) */ +  {0x2A, 0x15, 0x00}, /* Index 20 (14) */ +  {0x2A, 0x15, 0x2A}, /* Index 21 (15) */ +  {0x2A, 0x3F, 0x00}, /* Index 22 (16) */ +  {0x2A, 0x3F, 0x2A}, /* Index 23 (17) */ +  {0x00, 0x15, 0x15}, /* Index 24 (18) */ +  {0x00, 0x15, 0x3F}, /* Index 25 (19) */ +  {0x00, 0x3F, 0x15}, /* Index 26 (1A) */ +  {0x00, 0x3F, 0x3F}, /* Index 27 (1B) */ +  {0x2A, 0x15, 0x15}, /* Index 28 (1C) */ +  {0x2A, 0x15, 0x3F}, /* Index 29 (1D) */ +  {0x2A, 0x3F, 0x15}, /* Index 30 (1E) */ +  {0x2A, 0x3F, 0x3F}, /* Index 31 (1F) */ +  {0x15, 0x00, 0x00}, /* Index 32 (20) */ +  {0x15, 0x00, 0x2A}, /* Index 33 (21) */ +  {0x15, 0x2A, 0x00}, /* Index 34 (22) */ +  {0x15, 0x2A, 0x2A}, /* Index 35 (23) */ +  {0x3F, 0x00, 0x00}, /* Index 36 (24) */ +  {0x3F, 0x00, 0x2A}, /* Index 37 (25) */ +  {0x3F, 0x2A, 0x00}, /* Index 38 (26) */ +  {0x3F, 0x2A, 0x2A}, /* Index 39 (27) */ +  {0x15, 0x00, 0x15}, /* Index 40 (28) */ +  {0x15, 0x00, 0x3F}, /* Index 41 (29) */ +  {0x15, 0x2A, 0x15}, /* Index 42 (2A) */ +  {0x15, 0x2A, 0x3F}, /* Index 43 (2B) */ +  {0x3F, 0x00, 0x15}, /* Index 44 (2C) */ +  {0x3F, 0x00, 0x3F}, /* Index 45 (2D) */ +  {0x3F, 0x2A, 0x15}, /* Index 46 (2E) */ +  {0x3F, 0x2A, 0x3F}, /* Index 47 (2F) */ +  {0x15, 0x15, 0x00}, /* Index 48 (30) */ +  {0x15, 0x15, 0x2A}, /* Index 49 (31) */ +  {0x15, 0x3F, 0x00}, /* Index 50 (32) */ +  {0x15, 0x3F, 0x2A}, /* Index 51 (33) */ +  {0x3F, 0x15, 0x00}, /* Index 52 (34) */ +  {0x3F, 0x15, 0x2A}, /* Index 53 (35) */ +  {0x3F, 0x3F, 0x00}, /* Index 54 (36) */ +  {0x3F, 0x3F, 0x2A}, /* Index 55 (37) */ +  {0x15, 0x15, 0x15}, /* Index 56 (38) */ +  {0x15, 0x15, 0x3F}, /* Index 57 (39) */ +  {0x15, 0x3F, 0x15}, /* Index 58 (3A) */ +  {0x15, 0x3F, 0x3F}, /* Index 59 (3B) */ +  {0x3F, 0x15, 0x15}, /* Index 60 (3C) */ +  {0x3F, 0x15, 0x3F}, /* Index 61 (3D) */ +  {0x3F, 0x3F, 0x15}, /* Index 62 (3E) */ +  {0x3F, 0x3F, 0x3F}, /* Index 63 (3F) */ +  {0x16, 0x1E, 0x17}, /* Index 64 (40) */ +  {0x27, 0x2F, 0x00}, /* Index 65 (41) */ +  {0x1E, 0x20, 0x18}, /* Index 66 (42) */ +  {0x30, 0x04, 0x06}, /* Index 67 (43) */ +  {0x08, 0x05, 0x12}, /* Index 68 (44) */ +  {0x30, 0x0A, 0x31}, /* Index 69 (45) */ +  {0x08, 0x16, 0x07}, /* Index 70 (46) */ +  {0x1B, 0x33, 0x21}, /* Index 71 (47) */ +  {0x02, 0x2C, 0x16}, /* Index 72 (48) */ +  {0x3D, 0x1C, 0x11}, /* Index 73 (49) */ +  {0x07, 0x22, 0x33}, /* Index 74 (4A) */ +  {0x1D, 0x2B, 0x0A}, /* Index 75 (4B) */ +  {0x1A, 0x15, 0x16}, /* Index 76 (4C) */ +  {0x15, 0x26, 0x24}, /* Index 77 (4D) */ +  {0x05, 0x2B, 0x1E}, /* Index 78 (4E) */ +  {0x11, 0x18, 0x01}, /* Index 79 (4F) */ +  {0x3A, 0x2C, 0x27}, /* Index 80 (50) */ +  {0x25, 0x23, 0x00}, /* Index 81 (51) */ +  {0x2A, 0x16, 0x2A}, /* Index 82 (52) */ +  {0x18, 0x19, 0x17}, /* Index 83 (53) */ +  {0x0B, 0x0F, 0x06}, /* Index 84 (54) */ +  {0x00, 0x34, 0x08}, /* Index 85 (55) */ +  {0x00, 0x19, 0x12}, /* Index 86 (56) */ +  {0x01, 0x06, 0x3B}, /* Index 87 (57) */ +  {0x29, 0x0E, 0x25}, /* Index 88 (58) */ +  {0x20, 0x10, 0x28}, /* Index 89 (59) */ +  {0x02, 0x37, 0x24}, /* Index 90 (5A) */ +  {0x08, 0x2A, 0x2E}, /* Index 91 (5B) */ +  {0x26, 0x2A, 0x22}, /* Index 92 (5C) */ +  {0x0C, 0x0C, 0x2A}, /* Index 93 (5D) */ +  {0x28, 0x07, 0x02}, /* Index 94 (5E) */ +  {0x34, 0x05, 0x2B}, /* Index 95 (5F) */ +  {0x0C, 0x31, 0x33}, /* Index 96 (60) */ +  {0x22, 0x08, 0x30}, /* Index 97 (61) */ +  {0x00, 0x25, 0x01}, /* Index 98 (62) */ +  {0x06, 0x15, 0x01}, /* Index 99 (63) */ +  {0x0D, 0x2A, 0x0A}, /* Index 100 (64) */ +  {0x08, 0x25, 0x16}, /* Index 101 (65) */ +  {0x2A, 0x0A, 0x01}, /* Index 102 (66) */ +  {0x08, 0x3B, 0x28}, /* Index 103 (67) */ +  {0x00, 0x09, 0x04}, /* Index 104 (68) */ +  {0x16, 0x0F, 0x05}, /* Index 105 (69) */ +  {0x02, 0x2F, 0x1D}, /* Index 106 (6A) */ +  {0x06, 0x3E, 0x02}, /* Index 107 (6B) */ +  {0x09, 0x30, 0x07}, /* Index 108 (6C) */ +  {0x34, 0x03, 0x06}, /* Index 109 (6D) */ +  {0x00, 0x15, 0x2A}, /* Index 110 (6E) */ +  {0x39, 0x23, 0x20}, /* Index 111 (6F) */ +  {0x2A, 0x32, 0x0C}, /* Index 112 (70) */ +  {0x09, 0x31, 0x26}, /* Index 113 (71) */ +  {0x27, 0x23, 0x28}, /* Index 114 (72) */ +  {0x20, 0x13, 0x0C}, /* Index 115 (73) */ +  {0x2C, 0x1E, 0x26}, /* Index 116 (74) */ +  {0x20, 0x2F, 0x05}, /* Index 117 (75) */ +  {0x22, 0x1B, 0x22}, /* Index 118 (76) */ +  {0x09, 0x1C, 0x06}, /* Index 119 (77) */ +  {0x16, 0x38, 0x0E}, /* Index 120 (78) */ +  {0x22, 0x16, 0x20}, /* Index 121 (79) */ +  {0x10, 0x17, 0x25}, /* Index 122 (7A) */ +  {0x04, 0x32, 0x22}, /* Index 123 (7B) */ +  {0x20, 0x00, 0x37}, /* Index 124 (7C) */ +  {0x21, 0x15, 0x1A}, /* Index 125 (7D) */ +  {0x01, 0x04, 0x20}, /* Index 126 (7E) */ +  {0x02, 0x0C, 0x1E}, /* Index 127 (7F) */ +  {0x15, 0x15, 0x29}, /* Index 128 (80) */ +  {0x24, 0x3B, 0x00}, /* Index 129 (81) */ +  {0x24, 0x28, 0x01}, /* Index 130 (82) */ +  {0x20, 0x19, 0x07}, /* Index 131 (83) */ +  {0x1A, 0x13, 0x02}, /* Index 132 (84) */ +  {0x04, 0x24, 0x1F}, /* Index 133 (85) */ +  {0x32, 0x30, 0x08}, /* Index 134 (86) */ +  {0x23, 0x12, 0x0B}, /* Index 135 (87) */ +  {0x21, 0x38, 0x00}, /* Index 136 (88) */ +  {0x04, 0x13, 0x09}, /* Index 137 (89) */ +  {0x06, 0x3E, 0x14}, /* Index 138 (8A) */ +  {0x23, 0x22, 0x2D}, /* Index 139 (8B) */ +  {0x3D, 0x35, 0x30}, /* Index 140 (8C) */ +  {0x24, 0x38, 0x05}, /* Index 141 (8D) */ +  {0x18, 0x01, 0x26}, /* Index 142 (8E) */ +  {0x27, 0x11, 0x38}, /* Index 143 (8F) */ +  {0x08, 0x1A, 0x08}, /* Index 144 (90) */ +  {0x00, 0x1A, 0x07}, /* Index 145 (91) */ +  {0x16, 0x0C, 0x30}, /* Index 146 (92) */ +  {0x1B, 0x0A, 0x0B}, /* Index 147 (93) */ +  {0x01, 0x0C, 0x09}, /* Index 148 (94) */ +  {0x00, 0x33, 0x03}, /* Index 149 (95) */ +  {0x13, 0x0A, 0x06}, /* Index 150 (96) */ +  {0x22, 0x19, 0x23}, /* Index 151 (97) */ +  {0x07, 0x30, 0x39}, /* Index 152 (98) */ +  {0x20, 0x07, 0x0D}, /* Index 153 (99) */ +  {0x39, 0x18, 0x20}, /* Index 154 (9A) */ +  {0x32, 0x31, 0x29}, /* Index 155 (9B) */ +  {0x28, 0x3F, 0x02}, /* Index 156 (9C) */ +  {0x02, 0x15, 0x3E}, /* Index 157 (9D) */ +  {0x27, 0x33, 0x0E}, /* Index 158 (9E) */ +  {0x39, 0x2E, 0x1D}, /* Index 159 (9F) */ +  {0x1E, 0x38, 0x10}, /* Index 160 (A0) */ +  {0x01, 0x33, 0x19}, /* Index 161 (A1) */ +  {0x2B, 0x20, 0x0B}, /* Index 162 (A2) */ +  {0x29, 0x0B, 0x23}, /* Index 163 (A3) */ +  {0x25, 0x04, 0x19}, /* Index 164 (A4) */ +  {0x34, 0x36, 0x08}, /* Index 165 (A5) */ +  {0x17, 0x1D, 0x01}, /* Index 166 (A6) */ +  {0x0A, 0x29, 0x10}, /* Index 167 (A7) */ +  {0x14, 0x1C, 0x2B}, /* Index 168 (A8) */ +  {0x02, 0x2C, 0x13}, /* Index 169 (A9) */ +  {0x14, 0x16, 0x3A}, /* Index 170 (AA) */ +  {0x2B, 0x22, 0x28}, /* Index 171 (AB) */ +  {0x2E, 0x0A, 0x22}, /* Index 172 (AC) */ +  {0x00, 0x20, 0x28}, /* Index 173 (AD) */ +  {0x08, 0x22, 0x2D}, /* Index 174 (AE) */ +  {0x2C, 0x17, 0x1D}, /* Index 175 (AF) */ +  {0x02, 0x0D, 0x20}, /* Index 176 (B0) */ +  {0x00, 0x18, 0x2C}, /* Index 177 (B1) */ +  {0x19, 0x19, 0x3C}, /* Index 178 (B2) */ +  {0x20, 0x32, 0x10}, /* Index 179 (B3) */ +  {0x38, 0x1C, 0x21}, /* Index 180 (B4) */ +  {0x36, 0x10, 0x00}, /* Index 181 (B5) */ +  {0x20, 0x08, 0x19}, /* Index 182 (B6) */ +  {0x09, 0x12, 0x01}, /* Index 183 (B7) */ +  {0x1D, 0x39, 0x03}, /* Index 184 (B8) */ +  {0x20, 0x28, 0x11}, /* Index 185 (B9) */ +  {0x35, 0x17, 0x01}, /* Index 186 (BA) */ +  {0x0C, 0x02, 0x08}, /* Index 187 (BB) */ +  {0x39, 0x0D, 0x10}, /* Index 188 (BC) */ +  {0x38, 0x21, 0x16}, /* Index 189 (BD) */ +  {0x29, 0x3E, 0x14}, /* Index 190 (BE) */ +  {0x0A, 0x1C, 0x28}, /* Index 191 (BF) */ +  {0x2F, 0x03, 0x08}, /* Index 192 (C0) */ +  {0x02, 0x18, 0x39}, /* Index 193 (C1) */ +  {0x0F, 0x31, 0x1E}, /* Index 194 (C2) */ +  {0x24, 0x0C, 0x03}, /* Index 195 (C3) */ +  {0x04, 0x1A, 0x04}, /* Index 196 (C4) */ +  {0x30, 0x33, 0x04}, /* Index 197 (C5) */ +  {0x2C, 0x18, 0x36}, /* Index 198 (C6) */ +  {0x18, 0x2F, 0x09}, /* Index 199 (C7) */ +  {0x03, 0x04, 0x03}, /* Index 200 (C8) */ +  {0x22, 0x05, 0x10}, /* Index 201 (C9) */ +  {0x03, 0x24, 0x0A}, /* Index 202 (CA) */ +  {0x00, 0x1E, 0x1A}, /* Index 203 (CB) */ +  {0x00, 0x0A, 0x11}, /* Index 204 (CC) */ +  {0x0E, 0x1F, 0x09}, /* Index 205 (CD) */ +  {0x1B, 0x3A, 0x3B}, /* Index 206 (CE) */ +  {0x22, 0x39, 0x36}, /* Index 207 (CF) */ +  {0x22, 0x10, 0x23}, /* Index 208 (D0) */ +  {0x31, 0x14, 0x2B}, /* Index 209 (D1) */ +  {0x0C, 0x33, 0x35}, /* Index 210 (D2) */ +  {0x27, 0x3E, 0x10}, /* Index 211 (D3) */ +  {0x10, 0x04, 0x30}, /* Index 212 (D4) */ +  {0x05, 0x21, 0x0A}, /* Index 213 (D5) */ +  {0x09, 0x11, 0x24}, /* Index 214 (D6) */ +  {0x02, 0x2B, 0x00}, /* Index 215 (D7) */ +  {0x02, 0x05, 0x15}, /* Index 216 (D8) */ +  {0x11, 0x32, 0x1A}, /* Index 217 (D9) */ +  {0x2E, 0x1B, 0x08}, /* Index 218 (DA) */ +  {0x0D, 0x2F, 0x11}, /* Index 219 (DB) */ +  {0x03, 0x30, 0x28}, /* Index 220 (DC) */ +  {0x15, 0x38, 0x0A}, /* Index 221 (DD) */ +  {0x07, 0x00, 0x00}, /* Index 222 (DE) */ +  {0x1D, 0x1C, 0x20}, /* Index 223 (DF) */ +  {0x35, 0x11, 0x35}, /* Index 224 (E0) */ +  {0x24, 0x29, 0x03}, /* Index 225 (E1) */ +  {0x22, 0x37, 0x39}, /* Index 226 (E2) */ +  {0x11, 0x1B, 0x10}, /* Index 227 (E3) */ +  {0x2D, 0x18, 0x00}, /* Index 228 (E4) */ +  {0x20, 0x2F, 0x10}, /* Index 229 (E5) */ +  {0x21, 0x26, 0x32}, /* Index 230 (E6) */ +  {0x24, 0x10, 0x3D}, /* Index 231 (E7) */ +  {0x27, 0x0E, 0x03}, /* Index 232 (E8) */ +  {0x31, 0x1F, 0x11}, /* Index 233 (E9) */ +  {0x16, 0x0D, 0x02}, /* Index 234 (EA) */ +  {0x24, 0x12, 0x16}, /* Index 235 (EB) */ +  {0x0F, 0x27, 0x18}, /* Index 236 (EC) */ +  {0x10, 0x0E, 0x20}, /* Index 237 (ED) */ +  {0x12, 0x0C, 0x0D}, /* Index 238 (EE) */ +  {0x14, 0x38, 0x0B}, /* Index 239 (EF) */ +  {0x23, 0x0C, 0x09}, /* Index 240 (F0) */ +  {0x13, 0x21, 0x0E}, /* Index 241 (F1) */ +  {0x2C, 0x05, 0x2C}, /* Index 242 (F2) */ +  {0x08, 0x29, 0x01}, /* Index 243 (F3) */ +  {0x36, 0x0A, 0x13}, /* Index 244 (F4) */ +  {0x08, 0x2D, 0x26}, /* Index 245 (F5) */ +  {0x23, 0x30, 0x3E}, /* Index 246 (F6) */ +  {0x33, 0x00, 0x04}, /* Index 247 (F7) */ +  {0x25, 0x1E, 0x3A}, /* Index 248 (F8) */ +  {0x11, 0x2C, 0x26}, /* Index 249 (F9) */ +  {0x20, 0x32, 0x27}, /* Index 250 (FA) */ +  {0x23, 0x21, 0x13}, /* Index 251 (FB) */ +  {0x22, 0x23, 0x1F}, /* Index 252 (FC) */ +  {0x31, 0x08, 0x0A}, /* Index 253 (FD) */ +  {0x00, 0x01, 0x09}, /* Index 254 (FE) */ +  {0x17, 0x07, 0x38} /* Index 255 (FF) */ +}; + + +/*********************************************** + * 8x16 Font + * + * copied from file + * drivers/video/font_8x16.c (LINUX) + **********************************************/ +/**********************************************/ +/*                                            */ +/*       Font file generated by cpi2fnt       */ +/*                                            */ +/**********************************************/ + +#define FONTDATAMAX 4096 + +unsigned char fontdata_8x16[FONTDATAMAX] = { + +	/* 0 0x00 '^@' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 1 0x01 '^A' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x81, /* 10000001 */ +	0xa5, /* 10100101 */ +	0x81, /* 10000001 */ +	0x81, /* 10000001 */ +	0xbd, /* 10111101 */ +	0x99, /* 10011001 */ +	0x81, /* 10000001 */ +	0x81, /* 10000001 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 2 0x02 '^B' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0xff, /* 11111111 */ +	0xdb, /* 11011011 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xc3, /* 11000011 */ +	0xe7, /* 11100111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 3 0x03 '^C' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x6c, /* 01101100 */ +	0xfe, /* 11111110 */ +	0xfe, /* 11111110 */ +	0xfe, /* 11111110 */ +	0xfe, /* 11111110 */ +	0x7c, /* 01111100 */ +	0x38, /* 00111000 */ +	0x10, /* 00010000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 4 0x04 '^D' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x10, /* 00010000 */ +	0x38, /* 00111000 */ +	0x7c, /* 01111100 */ +	0xfe, /* 11111110 */ +	0x7c, /* 01111100 */ +	0x38, /* 00111000 */ +	0x10, /* 00010000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 5 0x05 '^E' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x3c, /* 00111100 */ +	0xe7, /* 11100111 */ +	0xe7, /* 11100111 */ +	0xe7, /* 11100111 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 6 0x06 '^F' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x7e, /* 01111110 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 7 0x07 '^G' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 8 0x08 '^H' */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xe7, /* 11100111 */ +	0xc3, /* 11000011 */ +	0xc3, /* 11000011 */ +	0xe7, /* 11100111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ + +	/* 9 0x09 '^I' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3c, /* 00111100 */ +	0x66, /* 01100110 */ +	0x42, /* 01000010 */ +	0x42, /* 01000010 */ +	0x66, /* 01100110 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 10 0x0a '^J' */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xc3, /* 11000011 */ +	0x99, /* 10011001 */ +	0xbd, /* 10111101 */ +	0xbd, /* 10111101 */ +	0x99, /* 10011001 */ +	0xc3, /* 11000011 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ + +	/* 11 0x0b '^K' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x1e, /* 00011110 */ +	0x0e, /* 00001110 */ +	0x1a, /* 00011010 */ +	0x32, /* 00110010 */ +	0x78, /* 01111000 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x78, /* 01111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 12 0x0c '^L' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3c, /* 00111100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 13 0x0d '^M' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3f, /* 00111111 */ +	0x33, /* 00110011 */ +	0x3f, /* 00111111 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x70, /* 01110000 */ +	0xf0, /* 11110000 */ +	0xe0, /* 11100000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 14 0x0e '^N' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7f, /* 01111111 */ +	0x63, /* 01100011 */ +	0x7f, /* 01111111 */ +	0x63, /* 01100011 */ +	0x63, /* 01100011 */ +	0x63, /* 01100011 */ +	0x63, /* 01100011 */ +	0x67, /* 01100111 */ +	0xe7, /* 11100111 */ +	0xe6, /* 11100110 */ +	0xc0, /* 11000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 15 0x0f '^O' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xdb, /* 11011011 */ +	0x3c, /* 00111100 */ +	0xe7, /* 11100111 */ +	0x3c, /* 00111100 */ +	0xdb, /* 11011011 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 16 0x10 '^P' */ +	0x00, /* 00000000 */ +	0x80, /* 10000000 */ +	0xc0, /* 11000000 */ +	0xe0, /* 11100000 */ +	0xf0, /* 11110000 */ +	0xf8, /* 11111000 */ +	0xfe, /* 11111110 */ +	0xf8, /* 11111000 */ +	0xf0, /* 11110000 */ +	0xe0, /* 11100000 */ +	0xc0, /* 11000000 */ +	0x80, /* 10000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 17 0x11 '^Q' */ +	0x00, /* 00000000 */ +	0x02, /* 00000010 */ +	0x06, /* 00000110 */ +	0x0e, /* 00001110 */ +	0x1e, /* 00011110 */ +	0x3e, /* 00111110 */ +	0xfe, /* 11111110 */ +	0x3e, /* 00111110 */ +	0x1e, /* 00011110 */ +	0x0e, /* 00001110 */ +	0x06, /* 00000110 */ +	0x02, /* 00000010 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 18 0x12 '^R' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 19 0x13 '^S' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x00, /* 00000000 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 20 0x14 '^T' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7f, /* 01111111 */ +	0xdb, /* 11011011 */ +	0xdb, /* 11011011 */ +	0xdb, /* 11011011 */ +	0x7b, /* 01111011 */ +	0x1b, /* 00011011 */ +	0x1b, /* 00011011 */ +	0x1b, /* 00011011 */ +	0x1b, /* 00011011 */ +	0x1b, /* 00011011 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 21 0x15 '^U' */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0x60, /* 01100000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x0c, /* 00001100 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 22 0x16 '^V' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0xfe, /* 11111110 */ +	0xfe, /* 11111110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 23 0x17 '^W' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 24 0x18 '^X' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 25 0x19 '^Y' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 26 0x1a '^Z' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x0c, /* 00001100 */ +	0xfe, /* 11111110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 27 0x1b '^[' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0xfe, /* 11111110 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 28 0x1c '^\' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 29 0x1d '^]' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x28, /* 00101000 */ +	0x6c, /* 01101100 */ +	0xfe, /* 11111110 */ +	0x6c, /* 01101100 */ +	0x28, /* 00101000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 30 0x1e '^^' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x10, /* 00010000 */ +	0x38, /* 00111000 */ +	0x38, /* 00111000 */ +	0x7c, /* 01111100 */ +	0x7c, /* 01111100 */ +	0xfe, /* 11111110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 31 0x1f '^_' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0xfe, /* 11111110 */ +	0x7c, /* 01111100 */ +	0x7c, /* 01111100 */ +	0x38, /* 00111000 */ +	0x38, /* 00111000 */ +	0x10, /* 00010000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 32 0x20 ' ' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 33 0x21 '!' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x3c, /* 00111100 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 34 0x22 '"' */ +	0x00, /* 00000000 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x24, /* 00100100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 35 0x23 '#' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0xfe, /* 11111110 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0xfe, /* 11111110 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 36 0x24 '$' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc2, /* 11000010 */ +	0xc0, /* 11000000 */ +	0x7c, /* 01111100 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x86, /* 10000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 37 0x25 '%' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc2, /* 11000010 */ +	0xc6, /* 11000110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0xc6, /* 11000110 */ +	0x86, /* 10000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 38 0x26 '&' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x76, /* 01110110 */ +	0xdc, /* 11011100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 39 0x27 ''' */ +	0x00, /* 00000000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 40 0x28 '(' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x0c, /* 00001100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 41 0x29 ')' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 42 0x2a '*' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x66, /* 01100110 */ +	0x3c, /* 00111100 */ +	0xff, /* 11111111 */ +	0x3c, /* 00111100 */ +	0x66, /* 01100110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 43 0x2b '+' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 44 0x2c ',' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 45 0x2d '-' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 46 0x2e '.' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 47 0x2f '/' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x02, /* 00000010 */ +	0x06, /* 00000110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0xc0, /* 11000000 */ +	0x80, /* 10000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 48 0x30 '0' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xd6, /* 11010110 */ +	0xd6, /* 11010110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 49 0x31 '1' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x38, /* 00111000 */ +	0x78, /* 01111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 50 0x32 '2' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0x06, /* 00000110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0xc0, /* 11000000 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 51 0x33 '3' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x3c, /* 00111100 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 52 0x34 '4' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x0c, /* 00001100 */ +	0x1c, /* 00011100 */ +	0x3c, /* 00111100 */ +	0x6c, /* 01101100 */ +	0xcc, /* 11001100 */ +	0xfe, /* 11111110 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x1e, /* 00011110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 53 0x35 '5' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xfc, /* 11111100 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 54 0x36 '6' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x60, /* 01100000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xfc, /* 11111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 55 0x37 '7' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0xc6, /* 11000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 56 0x38 '8' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 57 0x39 '9' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7e, /* 01111110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x0c, /* 00001100 */ +	0x78, /* 01111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 58 0x3a ':' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 59 0x3b ';' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 60 0x3c '<' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x06, /* 00000110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x0c, /* 00001100 */ +	0x06, /* 00000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 61 0x3d '=' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 62 0x3e '>' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x0c, /* 00001100 */ +	0x06, /* 00000110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 63 0x3f '?' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 64 0x40 '@' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xde, /* 11011110 */ +	0xde, /* 11011110 */ +	0xde, /* 11011110 */ +	0xdc, /* 11011100 */ +	0xc0, /* 11000000 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 65 0x41 'A' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x10, /* 00010000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 66 0x42 'B' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfc, /* 11111100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x7c, /* 01111100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0xfc, /* 11111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 67 0x43 'C' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3c, /* 00111100 */ +	0x66, /* 01100110 */ +	0xc2, /* 11000010 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc2, /* 11000010 */ +	0x66, /* 01100110 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 68 0x44 'D' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xf8, /* 11111000 */ +	0x6c, /* 01101100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x6c, /* 01101100 */ +	0xf8, /* 11111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 69 0x45 'E' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x66, /* 01100110 */ +	0x62, /* 01100010 */ +	0x68, /* 01101000 */ +	0x78, /* 01111000 */ +	0x68, /* 01101000 */ +	0x60, /* 01100000 */ +	0x62, /* 01100010 */ +	0x66, /* 01100110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 70 0x46 'F' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x66, /* 01100110 */ +	0x62, /* 01100010 */ +	0x68, /* 01101000 */ +	0x78, /* 01111000 */ +	0x68, /* 01101000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0xf0, /* 11110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 71 0x47 'G' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3c, /* 00111100 */ +	0x66, /* 01100110 */ +	0xc2, /* 11000010 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xde, /* 11011110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x66, /* 01100110 */ +	0x3a, /* 00111010 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 72 0x48 'H' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 73 0x49 'I' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 74 0x4a 'J' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x1e, /* 00011110 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x78, /* 01111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 75 0x4b 'K' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xe6, /* 11100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x6c, /* 01101100 */ +	0x78, /* 01111000 */ +	0x78, /* 01111000 */ +	0x6c, /* 01101100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0xe6, /* 11100110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 76 0x4c 'L' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xf0, /* 11110000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x62, /* 01100010 */ +	0x66, /* 01100110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 77 0x4d 'M' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xee, /* 11101110 */ +	0xfe, /* 11111110 */ +	0xfe, /* 11111110 */ +	0xd6, /* 11010110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 78 0x4e 'N' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xe6, /* 11100110 */ +	0xf6, /* 11110110 */ +	0xfe, /* 11111110 */ +	0xde, /* 11011110 */ +	0xce, /* 11001110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 79 0x4f 'O' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 80 0x50 'P' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfc, /* 11111100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x7c, /* 01111100 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0xf0, /* 11110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 81 0x51 'Q' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xd6, /* 11010110 */ +	0xde, /* 11011110 */ +	0x7c, /* 01111100 */ +	0x0c, /* 00001100 */ +	0x0e, /* 00001110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 82 0x52 'R' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfc, /* 11111100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x7c, /* 01111100 */ +	0x6c, /* 01101100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0xe6, /* 11100110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 83 0x53 'S' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x60, /* 01100000 */ +	0x38, /* 00111000 */ +	0x0c, /* 00001100 */ +	0x06, /* 00000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 84 0x54 'T' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x7e, /* 01111110 */ +	0x5a, /* 01011010 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 85 0x55 'U' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 86 0x56 'V' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x10, /* 00010000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 87 0x57 'W' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xd6, /* 11010110 */ +	0xd6, /* 11010110 */ +	0xd6, /* 11010110 */ +	0xfe, /* 11111110 */ +	0xee, /* 11101110 */ +	0x6c, /* 01101100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 88 0x58 'X' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x6c, /* 01101100 */ +	0x7c, /* 01111100 */ +	0x38, /* 00111000 */ +	0x38, /* 00111000 */ +	0x7c, /* 01111100 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 89 0x59 'Y' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 90 0x5a 'Z' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0xc6, /* 11000110 */ +	0x86, /* 10000110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0xc2, /* 11000010 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 91 0x5b '[' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3c, /* 00111100 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 92 0x5c '\' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x80, /* 10000000 */ +	0xc0, /* 11000000 */ +	0xe0, /* 11100000 */ +	0x70, /* 01110000 */ +	0x38, /* 00111000 */ +	0x1c, /* 00011100 */ +	0x0e, /* 00001110 */ +	0x06, /* 00000110 */ +	0x02, /* 00000010 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 93 0x5d ']' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3c, /* 00111100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 94 0x5e '^' */ +	0x10, /* 00010000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 95 0x5f '_' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 96 0x60 '`' */ +	0x00, /* 00000000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x0c, /* 00001100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 97 0x61 'a' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x78, /* 01111000 */ +	0x0c, /* 00001100 */ +	0x7c, /* 01111100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 98 0x62 'b' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xe0, /* 11100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x78, /* 01111000 */ +	0x6c, /* 01101100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 99 0x63 'c' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 100 0x64 'd' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x1c, /* 00011100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x3c, /* 00111100 */ +	0x6c, /* 01101100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 101 0x65 'e' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 102 0x66 'f' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x1c, /* 00011100 */ +	0x36, /* 00110110 */ +	0x32, /* 00110010 */ +	0x30, /* 00110000 */ +	0x78, /* 01111000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x78, /* 01111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 103 0x67 'g' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x76, /* 01110110 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x7c, /* 01111100 */ +	0x0c, /* 00001100 */ +	0xcc, /* 11001100 */ +	0x78, /* 01111000 */ +	0x00, /* 00000000 */ + +	/* 104 0x68 'h' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xe0, /* 11100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x6c, /* 01101100 */ +	0x76, /* 01110110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0xe6, /* 11100110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 105 0x69 'i' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 106 0x6a 'j' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x00, /* 00000000 */ +	0x0e, /* 00001110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ + +	/* 107 0x6b 'k' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xe0, /* 11100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x66, /* 01100110 */ +	0x6c, /* 01101100 */ +	0x78, /* 01111000 */ +	0x78, /* 01111000 */ +	0x6c, /* 01101100 */ +	0x66, /* 01100110 */ +	0xe6, /* 11100110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 108 0x6c 'l' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 109 0x6d 'm' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xec, /* 11101100 */ +	0xfe, /* 11111110 */ +	0xd6, /* 11010110 */ +	0xd6, /* 11010110 */ +	0xd6, /* 11010110 */ +	0xd6, /* 11010110 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 110 0x6e 'n' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xdc, /* 11011100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 111 0x6f 'o' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 112 0x70 'p' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xdc, /* 11011100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x7c, /* 01111100 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0xf0, /* 11110000 */ +	0x00, /* 00000000 */ + +	/* 113 0x71 'q' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x76, /* 01110110 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x7c, /* 01111100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x1e, /* 00011110 */ +	0x00, /* 00000000 */ + +	/* 114 0x72 'r' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xdc, /* 11011100 */ +	0x76, /* 01110110 */ +	0x66, /* 01100110 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0xf0, /* 11110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 115 0x73 's' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0x60, /* 01100000 */ +	0x38, /* 00111000 */ +	0x0c, /* 00001100 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 116 0x74 't' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x10, /* 00010000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0xfc, /* 11111100 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x36, /* 00110110 */ +	0x1c, /* 00011100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 117 0x75 'u' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 118 0x76 'v' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 119 0x77 'w' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xd6, /* 11010110 */ +	0xd6, /* 11010110 */ +	0xd6, /* 11010110 */ +	0xfe, /* 11111110 */ +	0x6c, /* 01101100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 120 0x78 'x' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x38, /* 00111000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 121 0x79 'y' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7e, /* 01111110 */ +	0x06, /* 00000110 */ +	0x0c, /* 00001100 */ +	0xf8, /* 11111000 */ +	0x00, /* 00000000 */ + +	/* 122 0x7a 'z' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0xcc, /* 11001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 123 0x7b '{' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x0e, /* 00001110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x70, /* 01110000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x0e, /* 00001110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 124 0x7c '|' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 125 0x7d '}' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x70, /* 01110000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x0e, /* 00001110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x70, /* 01110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 126 0x7e '~' */ +	0x00, /* 00000000 */ +	0x76, /* 01110110 */ +	0xdc, /* 11011100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 127 0x7f '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x10, /* 00010000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 128 0x80 '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3c, /* 00111100 */ +	0x66, /* 01100110 */ +	0xc2, /* 11000010 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc2, /* 11000010 */ +	0x66, /* 01100110 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x70, /* 01110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 129 0x81 '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xcc, /* 11001100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 130 0x82 '' */ +	0x00, /* 00000000 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 131 0x83 '' */ +	0x00, /* 00000000 */ +	0x10, /* 00010000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0x00, /* 00000000 */ +	0x78, /* 01111000 */ +	0x0c, /* 00001100 */ +	0x7c, /* 01111100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 132 0x84 '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xcc, /* 11001100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x78, /* 01111000 */ +	0x0c, /* 00001100 */ +	0x7c, /* 01111100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 133 0x85 '' */ +	0x00, /* 00000000 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x78, /* 01111000 */ +	0x0c, /* 00001100 */ +	0x7c, /* 01111100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 134 0x86 '' */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x00, /* 00000000 */ +	0x78, /* 01111000 */ +	0x0c, /* 00001100 */ +	0x7c, /* 01111100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 135 0x87 '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x18, /* 00011000 */ +	0x70, /* 01110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 136 0x88 '' */ +	0x00, /* 00000000 */ +	0x10, /* 00010000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 137 0x89 '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 138 0x8a '' */ +	0x00, /* 00000000 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 139 0x8b '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x66, /* 01100110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 140 0x8c '' */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x66, /* 01100110 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 141 0x8d '' */ +	0x00, /* 00000000 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 142 0x8e '' */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x10, /* 00010000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 143 0x8f '' */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x10, /* 00010000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 144 0x90 '' */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x66, /* 01100110 */ +	0x62, /* 01100010 */ +	0x68, /* 01101000 */ +	0x78, /* 01111000 */ +	0x68, /* 01101000 */ +	0x62, /* 01100010 */ +	0x66, /* 01100110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 145 0x91 '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xec, /* 11101100 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x7e, /* 01111110 */ +	0xd8, /* 11011000 */ +	0xd8, /* 11011000 */ +	0x6e, /* 01101110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 146 0x92 '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3e, /* 00111110 */ +	0x6c, /* 01101100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xfe, /* 11111110 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xce, /* 11001110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 147 0x93 '' */ +	0x00, /* 00000000 */ +	0x10, /* 00010000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 148 0x94 '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 149 0x95 '' */ +	0x00, /* 00000000 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 150 0x96 '' */ +	0x00, /* 00000000 */ +	0x30, /* 00110000 */ +	0x78, /* 01111000 */ +	0xcc, /* 11001100 */ +	0x00, /* 00000000 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 151 0x97 '' */ +	0x00, /* 00000000 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 152 0x98 '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7e, /* 01111110 */ +	0x06, /* 00000110 */ +	0x0c, /* 00001100 */ +	0x78, /* 01111000 */ +	0x00, /* 00000000 */ + +	/* 153 0x99 '' */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 154 0x9a '' */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 155 0x9b '' */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 156 0x9c '' */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0x64, /* 01100100 */ +	0x60, /* 01100000 */ +	0xf0, /* 11110000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0xe6, /* 11100110 */ +	0xfc, /* 11111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 157 0x9d '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 158 0x9e '' */ +	0x00, /* 00000000 */ +	0xf8, /* 11111000 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xf8, /* 11111000 */ +	0xc4, /* 11000100 */ +	0xcc, /* 11001100 */ +	0xde, /* 11011110 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 159 0x9f '' */ +	0x00, /* 00000000 */ +	0x0e, /* 00001110 */ +	0x1b, /* 00011011 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xd8, /* 11011000 */ +	0x70, /* 01110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 160 0xa0 ' ' */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0x00, /* 00000000 */ +	0x78, /* 01111000 */ +	0x0c, /* 00001100 */ +	0x7c, /* 01111100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 161 0xa1 '¡' */ +	0x00, /* 00000000 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 162 0xa2 '¢' */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 163 0xa3 '£' */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0x00, /* 00000000 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 164 0xa4 '¤' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x76, /* 01110110 */ +	0xdc, /* 11011100 */ +	0x00, /* 00000000 */ +	0xdc, /* 11011100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 165 0xa5 '¥' */ +	0x76, /* 01110110 */ +	0xdc, /* 11011100 */ +	0x00, /* 00000000 */ +	0xc6, /* 11000110 */ +	0xe6, /* 11100110 */ +	0xf6, /* 11110110 */ +	0xfe, /* 11111110 */ +	0xde, /* 11011110 */ +	0xce, /* 11001110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 166 0xa6 '¦' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3c, /* 00111100 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x3e, /* 00111110 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 167 0xa7 '§' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 168 0xa8 '¨' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x00, /* 00000000 */ +	0x30, /* 00110000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0xc0, /* 11000000 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x7c, /* 01111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 169 0xa9 '©' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 170 0xaa 'ª' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 171 0xab '«' */ +	0x00, /* 00000000 */ +	0x60, /* 01100000 */ +	0xe0, /* 11100000 */ +	0x62, /* 01100010 */ +	0x66, /* 01100110 */ +	0x6c, /* 01101100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0xdc, /* 11011100 */ +	0x86, /* 10000110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x3e, /* 00111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 172 0xac '¬' */ +	0x00, /* 00000000 */ +	0x60, /* 01100000 */ +	0xe0, /* 11100000 */ +	0x62, /* 01100010 */ +	0x66, /* 01100110 */ +	0x6c, /* 01101100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x66, /* 01100110 */ +	0xce, /* 11001110 */ +	0x9a, /* 10011010 */ +	0x3f, /* 00111111 */ +	0x06, /* 00000110 */ +	0x06, /* 00000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 173 0xad '' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x3c, /* 00111100 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 174 0xae '®' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x36, /* 00110110 */ +	0x6c, /* 01101100 */ +	0xd8, /* 11011000 */ +	0x6c, /* 01101100 */ +	0x36, /* 00110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 175 0xaf '¯' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xd8, /* 11011000 */ +	0x6c, /* 01101100 */ +	0x36, /* 00110110 */ +	0x6c, /* 01101100 */ +	0xd8, /* 11011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 176 0xb0 '°' */ +	0x11, /* 00010001 */ +	0x44, /* 01000100 */ +	0x11, /* 00010001 */ +	0x44, /* 01000100 */ +	0x11, /* 00010001 */ +	0x44, /* 01000100 */ +	0x11, /* 00010001 */ +	0x44, /* 01000100 */ +	0x11, /* 00010001 */ +	0x44, /* 01000100 */ +	0x11, /* 00010001 */ +	0x44, /* 01000100 */ +	0x11, /* 00010001 */ +	0x44, /* 01000100 */ +	0x11, /* 00010001 */ +	0x44, /* 01000100 */ + +	/* 177 0xb1 '±' */ +	0x55, /* 01010101 */ +	0xaa, /* 10101010 */ +	0x55, /* 01010101 */ +	0xaa, /* 10101010 */ +	0x55, /* 01010101 */ +	0xaa, /* 10101010 */ +	0x55, /* 01010101 */ +	0xaa, /* 10101010 */ +	0x55, /* 01010101 */ +	0xaa, /* 10101010 */ +	0x55, /* 01010101 */ +	0xaa, /* 10101010 */ +	0x55, /* 01010101 */ +	0xaa, /* 10101010 */ +	0x55, /* 01010101 */ +	0xaa, /* 10101010 */ + +	/* 178 0xb2 '²' */ +	0xdd, /* 11011101 */ +	0x77, /* 01110111 */ +	0xdd, /* 11011101 */ +	0x77, /* 01110111 */ +	0xdd, /* 11011101 */ +	0x77, /* 01110111 */ +	0xdd, /* 11011101 */ +	0x77, /* 01110111 */ +	0xdd, /* 11011101 */ +	0x77, /* 01110111 */ +	0xdd, /* 11011101 */ +	0x77, /* 01110111 */ +	0xdd, /* 11011101 */ +	0x77, /* 01110111 */ +	0xdd, /* 11011101 */ +	0x77, /* 01110111 */ + +	/* 179 0xb3 '³' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 180 0xb4 '´' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xf8, /* 11111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 181 0xb5 'µ' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xf8, /* 11111000 */ +	0x18, /* 00011000 */ +	0xf8, /* 11111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 182 0xb6 '¶' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0xf6, /* 11110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 183 0xb7 '·' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 184 0xb8 '¸' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xf8, /* 11111000 */ +	0x18, /* 00011000 */ +	0xf8, /* 11111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 185 0xb9 '¹' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0xf6, /* 11110110 */ +	0x06, /* 00000110 */ +	0xf6, /* 11110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 186 0xba 'º' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 187 0xbb '»' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x06, /* 00000110 */ +	0xf6, /* 11110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 188 0xbc '¼' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0xf6, /* 11110110 */ +	0x06, /* 00000110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 189 0xbd '½' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 190 0xbe '¾' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xf8, /* 11111000 */ +	0x18, /* 00011000 */ +	0xf8, /* 11111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 191 0xbf '¿' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xf8, /* 11111000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 192 0xc0 'À' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x1f, /* 00011111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 193 0xc1 'Á' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 194 0xc2 'Â' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 195 0xc3 'Ã' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x1f, /* 00011111 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 196 0xc4 'Ä' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 197 0xc5 'Å' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xff, /* 11111111 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 198 0xc6 'Æ' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x1f, /* 00011111 */ +	0x18, /* 00011000 */ +	0x1f, /* 00011111 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 199 0xc7 'Ç' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x37, /* 00110111 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 200 0xc8 'È' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x37, /* 00110111 */ +	0x30, /* 00110000 */ +	0x3f, /* 00111111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 201 0xc9 'É' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3f, /* 00111111 */ +	0x30, /* 00110000 */ +	0x37, /* 00110111 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 202 0xca 'Ê' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0xf7, /* 11110111 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 203 0xcb 'Ë' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0xf7, /* 11110111 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 204 0xcc 'Ì' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x37, /* 00110111 */ +	0x30, /* 00110000 */ +	0x37, /* 00110111 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 205 0xcd 'Í' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 206 0xce 'Î' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0xf7, /* 11110111 */ +	0x00, /* 00000000 */ +	0xf7, /* 11110111 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 207 0xcf 'Ï' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 208 0xd0 'Ð' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 209 0xd1 'Ñ' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 210 0xd2 'Ò' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 211 0xd3 'Ó' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x3f, /* 00111111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 212 0xd4 'Ô' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x1f, /* 00011111 */ +	0x18, /* 00011000 */ +	0x1f, /* 00011111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 213 0xd5 'Õ' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x1f, /* 00011111 */ +	0x18, /* 00011000 */ +	0x1f, /* 00011111 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 214 0xd6 'Ö' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x3f, /* 00111111 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 215 0xd7 '×' */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0xff, /* 11111111 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ + +	/* 216 0xd8 'Ø' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xff, /* 11111111 */ +	0x18, /* 00011000 */ +	0xff, /* 11111111 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 217 0xd9 'Ù' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xf8, /* 11111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 218 0xda 'Ú' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x1f, /* 00011111 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 219 0xdb 'Û' */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ + +	/* 220 0xdc 'Ü' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ + +	/* 221 0xdd 'Ý' */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ +	0xf0, /* 11110000 */ + +	/* 222 0xde 'Þ' */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ +	0x0f, /* 00001111 */ + +	/* 223 0xdf 'ß' */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0xff, /* 11111111 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 224 0xe0 'à' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x76, /* 01110110 */ +	0xdc, /* 11011100 */ +	0xd8, /* 11011000 */ +	0xd8, /* 11011000 */ +	0xd8, /* 11011000 */ +	0xdc, /* 11011100 */ +	0x76, /* 01110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 225 0xe1 'á' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x78, /* 01111000 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xcc, /* 11001100 */ +	0xd8, /* 11011000 */ +	0xcc, /* 11001100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xcc, /* 11001100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 226 0xe2 'â' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0xc0, /* 11000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 227 0xe3 'ã' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 228 0xe4 'ä' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0xc6, /* 11000110 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 229 0xe5 'å' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0xd8, /* 11011000 */ +	0xd8, /* 11011000 */ +	0xd8, /* 11011000 */ +	0xd8, /* 11011000 */ +	0xd8, /* 11011000 */ +	0x70, /* 01110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 230 0xe6 'æ' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x7c, /* 01111100 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0xc0, /* 11000000 */ +	0x00, /* 00000000 */ + +	/* 231 0xe7 'ç' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x76, /* 01110110 */ +	0xdc, /* 11011100 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 232 0xe8 'è' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x3c, /* 00111100 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x3c, /* 00111100 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 233 0xe9 'é' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xfe, /* 11111110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 234 0xea 'ê' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0xee, /* 11101110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 235 0xeb 'ë' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x1e, /* 00011110 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x0c, /* 00001100 */ +	0x3e, /* 00111110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x66, /* 01100110 */ +	0x3c, /* 00111100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 236 0xec 'ì' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0xdb, /* 11011011 */ +	0xdb, /* 11011011 */ +	0xdb, /* 11011011 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 237 0xed 'í' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x03, /* 00000011 */ +	0x06, /* 00000110 */ +	0x7e, /* 01111110 */ +	0xdb, /* 11011011 */ +	0xdb, /* 11011011 */ +	0xf3, /* 11110011 */ +	0x7e, /* 01111110 */ +	0x60, /* 01100000 */ +	0xc0, /* 11000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 238 0xee 'î' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x1c, /* 00011100 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x7c, /* 01111100 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x1c, /* 00011100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 239 0xef 'ï' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7c, /* 01111100 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0xc6, /* 11000110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 240 0xf0 'ð' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0xfe, /* 11111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 241 0xf1 'ñ' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x7e, /* 01111110 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 242 0xf2 'ò' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x0c, /* 00001100 */ +	0x06, /* 00000110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 243 0xf3 'ó' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x30, /* 00110000 */ +	0x60, /* 01100000 */ +	0x30, /* 00110000 */ +	0x18, /* 00011000 */ +	0x0c, /* 00001100 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 244 0xf4 'ô' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x0e, /* 00001110 */ +	0x1b, /* 00011011 */ +	0x1b, /* 00011011 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ + +	/* 245 0xf5 'õ' */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0xd8, /* 11011000 */ +	0xd8, /* 11011000 */ +	0xd8, /* 11011000 */ +	0x70, /* 01110000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 246 0xf6 'ö' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 247 0xf7 '÷' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x76, /* 01110110 */ +	0xdc, /* 11011100 */ +	0x00, /* 00000000 */ +	0x76, /* 01110110 */ +	0xdc, /* 11011100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 248 0xf8 'ø' */ +	0x00, /* 00000000 */ +	0x38, /* 00111000 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x38, /* 00111000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 249 0xf9 'ù' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 250 0xfa 'ú' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x18, /* 00011000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 251 0xfb 'û' */ +	0x00, /* 00000000 */ +	0x0f, /* 00001111 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0x0c, /* 00001100 */ +	0xec, /* 11101100 */ +	0x6c, /* 01101100 */ +	0x6c, /* 01101100 */ +	0x3c, /* 00111100 */ +	0x1c, /* 00011100 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 252 0xfc 'ü' */ +	0x00, /* 00000000 */ +	0x6c, /* 01101100 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x36, /* 00110110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 253 0xfd 'ý' */ +	0x00, /* 00000000 */ +	0x3c, /* 00111100 */ +	0x66, /* 01100110 */ +	0x0c, /* 00001100 */ +	0x18, /* 00011000 */ +	0x32, /* 00110010 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 254 0xfe 'þ' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x7e, /* 01111110 */ +	0x7e, /* 01111110 */ +	0x7e, /* 01111110 */ +	0x7e, /* 01111110 */ +	0x7e, /* 01111110 */ +	0x7e, /* 01111110 */ +	0x7e, /* 01111110 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +	/* 255 0xff 'ÿ' */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ +	0x00, /* 00000000 */ + +}; + +#endif /* #ifndef _VGA_TABLE_H */ diff --git a/board/mpl/mip405/mip405.h b/board/mpl/mip405/mip405.h new file mode 100644 index 000000000..101b173ca --- /dev/null +++ b/board/mpl/mip405/mip405.h @@ -0,0 +1,187 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland, d.peter@mpl.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, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + /**************************************************************************** + * Global routines used for MIP405 + *****************************************************************************/ +#ifndef __ASSEMBLY__ +/*int switch_cs(unsigned char boot);*/ + +extern int  mem_test(unsigned long start, unsigned long ramsize,int mode); + +void user_led0(unsigned char on); + + + +#endif +/* timings */ +/* PLD (CS7) */ +#define PLD_BME	0 	/* Burst disable */ +#define PLD_TWE	5	/* 5 * 30ns 120ns Waitstates (access=TWT+1+TH) */ +#define PLD_CSN	1	/* Chipselect is driven inactive for 1 Cycle BTW transfers */ +#define PLD_OEN	1	/* Cycles from CS low to OE low   */ +#define PLD_WBN	1	/* Cycles from CS low to WE low   */ +#define PLD_WBF	1	/* Cycles from WE high to CS high */ +#define PLD_TH	2	/* Number of hold cycles after transfer */ +#define PLD_RE	0	/* Ready disabled */ +#define PLD_SOR	1	/* Sample on Ready disabled */ +#define PLD_BEM	0	/* Byte Write only active on Write cycles */ +#define PLD_PEN	0	/* Parity disable */ +#define PLD_AP 	((PLD_BME << 31) + (PLD_TWE << 23) + (PLD_CSN << 18) + (PLD_OEN << 16) + (PLD_WBN << 14) + \ +					(PLD_WBF << 12) + (PLD_TH << 9) + (PLD_RE << 8) + (PLD_SOR << 7) + (PLD_BEM << 6) + (PLD_PEN << 5)) + +/* Size: 0=1MB, 1=2MB, 2=4MB, 3=8MB, 4=16MB, 5=32MB, 6=64MB, 7=128MB */ +#define PLD_BS	0	/* 1 MByte */ +/* Usage: 0=disabled, 1=Read only, 2=Write Only, 3=R/W */ +#define PLD_BU	3	/* R/W */ +/* Bus width: 0=8Bit, 1=16Bit, 2=32Bit, 3=Reserved */ +#define PLD_BW	0	/* 16Bit */ +#define PLD_CR	((PER_PLD_ADDR & 0xfff00000) + (PLD_BS << 17) + (PLD_BU << 15) + (PLD_BW << 13)) + + +/* timings */ + +#define PER_BOARD_ADDR (PER_UART1_ADDR+(1024*1024)) +/* Dummy CS to get the board revision */ +#define BOARD_BME	0 	/* Burst disable */ +#define BOARD_TWE	255	/* 255 * 30ns 120ns Waitstates (access=TWT+1+TH) */ +#define BOARD_CSN	1	/* Chipselect is driven inactive for 1 Cycle BTW transfers */ +#define BOARD_OEN	1	/* Cycles from CS low to OE low   */ +#define BOARD_WBN	1	/* Cycles from CS low to WE low   */ +#define BOARD_WBF	1	/* Cycles from WE high to CS high */ +#define BOARD_TH	2	/* Number of hold cycles after transfer */ +#define BOARD_RE	0	/* Ready disabled */ +#define BOARD_SOR	1	/* Sample on Ready disabled */ +#define BOARD_BEM	0	/* Byte Write only active on Write cycles */ +#define BOARD_PEN	0	/* Parity disable */ +#define BOARD_AP 	((BOARD_BME << 31) + (BOARD_TWE << 23) + (BOARD_CSN << 18) + (BOARD_OEN << 16) + (BOARD_WBN << 14) + \ +					(BOARD_WBF << 12) + (BOARD_TH << 9) + (BOARD_RE << 8) + (BOARD_SOR << 7) + (BOARD_BEM << 6) + (BOARD_PEN << 5)) + +/* Size: 0=1MB, 1=2MB, 2=4MB, 3=8MB, 4=16MB, 5=32MB, 6=64MB, 7=128MB */ +#define BOARD_BS	0	/* 1 MByte */ +/* Usage: 0=disabled, 1=Read only, 2=Write Only, 3=R/W */ +#define BOARD_BU	3	/* R/W */ +/* Bus width: 0=8Bit, 1=16Bit, 2=32Bit, 3=Reserved */ +#define BOARD_BW	0	/* 16Bit */ +#define BOARD_CR	((PER_BOARD_ADDR & 0xfff00000) + (BOARD_BS << 17) + (BOARD_BU << 15) + (BOARD_BW << 13)) + + +/* UART0 CS2 */ +#define UART0_BME	0 	/* Burst disable */ +#define UART0_TWE	7	/* 7 * 30ns 210ns Waitstates (access=TWT+1+TH) */ +#define UART0_CSN	1	/* Chipselect is driven inactive for 1 Cycle BTW transfers */ +#define UART0_OEN	1	/* Cycles from CS low to OE low   */ +#define UART0_WBN	1	/* Cycles from CS low to WE low   */ +#define UART0_WBF	1	/* Cycles from WE high to CS high */ +#define UART0_TH	2	/* Number of hold cycles after transfer */ +#define UART0_RE	0	/* Ready disabled */ +#define UART0_SOR	1	/* Sample on Ready disabled */ +#define UART0_BEM	0	/* Byte Write only active on Write cycles */ +#define UART0_PEN	0	/* Parity disable */ +#define UART0_AP 	((UART0_BME << 31) + (UART0_TWE << 23) + (UART0_CSN << 18) + (UART0_OEN << 16) + (UART0_WBN << 14) + \ +					(UART0_WBF << 12) + (UART0_TH << 9) + (UART0_RE << 8) + (UART0_SOR << 7) + (UART0_BEM << 6) + (UART0_PEN << 5)) + +/* Size: 0=1MB, 1=2MB, 2=4MB, 3=8MB, 4=16MB, 5=32MB, 6=64MB, 7=128MB */ +#define UART0_BS	0	/* 1 MByte */ +/* Usage: 0=disabled, 1=Read only, 2=Write Only, 3=R/W */ +#define UART0_BU	3	/* R/W */ +/* Bus width: 0=8Bit, 1=16Bit, 2=32Bit, 3=Reserved */ +#define UART0_BW	0	/* 8Bit */ +#define UART0_CR	((PER_UART0_ADDR & 0xfff00000) + (UART0_BS << 17) + (UART0_BU << 15) + (UART0_BW << 13)) + +/* UART1 CS3 */ +#define UART1_AP UART0_AP /* same timing as UART0 */ +#define UART1_CR	((PER_UART1_ADDR & 0xfff00000) + (UART0_BS << 17) + (UART0_BU << 15) + (UART0_BW << 13)) + + + +/* Flash CS0 or CS 1 */ +/* 0x7F8FFE80 slowest timing at all... */ +#define FLASH_BME_B	1 	/* Burst enable */ +#define FLASH_FWT_B	0x6	/* 6 * 30ns 210ns First Wait Access */ +#define FLASH_BWT_B	0x6	/* 6 * 30ns 210ns Burst Wait Access */ +#define FLASH_BME	0 	/* Burst disable */ +#define FLASH_TWE	0xb/* 11 * 30ns 330ns Waitstates (access=TWT+1+TH) */ +#define FLASH_CSN	0	/* Chipselect is driven inactive for 1 Cycle BTW transfers */ +#define FLASH_OEN	1	/* Cycles from CS low to OE low   */ +#define FLASH_WBN	1	/* Cycles from CS low to WE low   */ +#define FLASH_WBF	1	/* Cycles from WE high to CS high */ +#define FLASH_TH	2	/* Number of hold cycles after transfer */ +#define FLASH_RE	0	/* Ready disabled */ +#define FLASH_SOR	1	/* Sample on Ready disabled */ +#define FLASH_BEM	0	/* Byte Write only active on Write cycles */ +#define FLASH_PEN	0	/* Parity disable */ +/* Access Parameter Register for non Boot */ +#define FLASH_AP 	((FLASH_BME << 31) + (FLASH_TWE << 23) + (FLASH_CSN << 18) + (FLASH_OEN << 16) + (FLASH_WBN << 14) + \ +					(FLASH_WBF << 12) + (FLASH_TH << 9) + (FLASH_RE << 8) + (FLASH_SOR << 7) + (FLASH_BEM << 6) + (FLASH_PEN << 5)) +/* Access Parameter Register for Boot */ +#define FLASH_AP_B 	((FLASH_BME_B << 31) + (FLASH_FWT_B << 26) + (FLASH_BWT_B << 23) + (FLASH_CSN << 18) + (FLASH_OEN << 16) + (FLASH_WBN << 14) + \ +					(FLASH_WBF << 12) + (FLASH_TH << 9) + (FLASH_RE << 8) + (FLASH_SOR << 7) + (FLASH_BEM << 6) + (FLASH_PEN << 5)) + +/* Size: 0=1MB, 1=2MB, 2=4MB, 3=8MB, 4=16MB, 5=32MB, 6=64MB, 7=128MB */ +#define FLASH_BS	2	/* 4 MByte */ +/* Usage: 0=disabled, 1=Read only, 2=Write Only, 3=R/W */ +#define FLASH_BU	3	/* R/W */ +/* Bus width: 0=8Bit, 1=16Bit, 2=32Bit, 3=Reserved */ +#define FLASH_BW	1	/* 16Bit */ +/* CR register for Boot */ +#define FLASH_CR_B	((FLASH_BASE0_PRELIM & 0xfff00000) + (FLASH_BS << 17) + (FLASH_BU << 15) + (FLASH_BW << 13)) +/* CR register for non Boot */ +#define FLASH_CR	((MULTI_PURPOSE_SOCKET_ADDR & 0xfff00000) + (FLASH_BS << 17) + (FLASH_BU << 15) + (FLASH_BW << 13)) + +/* MPS CS1 or CS0 */ +/* Boot CS: */ +#define MPS_BME_B	1 	/* Burst enable */ +#define MPS_FWT_B	0x6/* 6 * 30ns 210ns First Wait Access */ +#define MPS_BWT_B	0x6	/* 6 * 30ns 210ns Burst Wait Access */ +#define MPS_BME		0 	/* Burst disable */ +#define MPS_TWE		0xb/* 11 * 30ns 330ns Waitstates (access=TWT+1+TH) */ +#define MPS_CSN		0	/* Chipselect is driven inactive for 1 Cycle BTW transfers */ +#define MPS_OEN		1	/* Cycles from CS low to OE low   */ +#define MPS_WBN		1	/* Cycles from CS low to WE low   */ +#define MPS_WBF		1	/* Cycles from WE high to CS high */ +#define MPS_TH		2	/* Number of hold cycles after transfer */ +#define MPS_RE		0	/* Ready disabled */ +#define MPS_SOR		1	/* Sample on Ready disabled */ +#define MPS_BEM		0	/* Byte Write only active on Write cycles */ +#define MPS_PEN		0	/* Parity disable */ +/* Access Parameter Register for non Boot */ +#define MPS_AP 		((MPS_BME << 31) + (MPS_TWE << 23) + (MPS_CSN << 18) + (MPS_OEN << 16) + (MPS_WBN << 14) + \ +					(MPS_WBF << 12) + (MPS_TH << 9) + (MPS_RE << 8) + (MPS_SOR << 7) + (MPS_BEM << 6) + (MPS_PEN << 5)) +/* Access Parameter Register for Boot */ +#define MPS_AP_B 		((MPS_BME_B << 31) + (MPS_FWT_B << 26) + (MPS_BWT_B << 23) + (MPS_CSN << 18) + (MPS_OEN << 16) + (MPS_WBN << 14) + \ +					(MPS_WBF << 12) + (MPS_TH << 9) + (MPS_RE << 8) + (MPS_SOR << 7) + (MPS_BEM << 6) + (MPS_PEN << 5)) + +/* Size: 0=1MB, 1=2MB, 2=4MB, 3=8MB, 4=16MB, 5=32MB, 6=64MB, 7=128MB */ +#define MPS_BS		2	/* 4 MByte */ +/* Usage: 0=disabled, 1=Read only, 2=Write Only, 3=R/W */ +#define MPS_BU		3	/* R/W */ +/* Bus width: 0=8Bit, 1=16Bit, 2=32Bit, 3=Reserved */ +#define MPS_BW		0	/* 8Bit */ +/* CR register for Boot */ +#define MPS_CR_B	((FLASH_BASE0_PRELIM & 0xfff00000) + (MPS_BS << 17) + (MPS_BU << 15) + (MPS_BW << 13)) +/* CR register for non Boot */ +#define MPS_CR		((MULTI_PURPOSE_SOCKET_ADDR & 0xfff00000) + (MPS_BS << 17) + (MPS_BU << 15) + (MPS_BW << 13)) + + + diff --git a/board/mpl/pip405/pip405.h b/board/mpl/pip405/pip405.h new file mode 100644 index 000000000..58b18e960 --- /dev/null +++ b/board/mpl/pip405/pip405.h @@ -0,0 +1,53 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland, d.peter@mpl.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, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + /**************************************************************************** + * Global routines used for PIP405 + *****************************************************************************/ + + +extern int  mem_test(unsigned long start, unsigned long ramsize,int mode); + +void print_pip405_info(void); + +void user_led0(unsigned char on); +void user_led1(unsigned char on); + + +#define PLD_BASE_ADDRESS		CFG_ISA_IO_BASE_ADDRESS + 0x800 +#define PLD_PART_REG				PLD_BASE_ADDRESS + 0 +#define PLD_VERS_REG				PLD_BASE_ADDRESS + 1 +#define PLD_BOARD_CFG_REG		PLD_BASE_ADDRESS + 2 +#define PLD_LED_USER_REG		PLD_BASE_ADDRESS + 3 +#define PLD_SYS_MAN_REG			PLD_BASE_ADDRESS + 4 +#define PLD_FLASH_COM_REG		PLD_BASE_ADDRESS + 5 +#define PLD_CAN_REG					PLD_BASE_ADDRESS + 6 +#define PLD_SER_PWR_REG			PLD_BASE_ADDRESS + 7 +#define PLD_COM_PWR_REG			PLD_BASE_ADDRESS + 8 +#define PLD_NIC_VGA_REG			PLD_BASE_ADDRESS + 9 +#define PLD_SCSI_RST_REG		PLD_BASE_ADDRESS + 0xA + +#define PIIX4_VENDOR_ID			0x8086 +#define PIIX4_IDE_DEV_ID		0x7111 + + diff --git a/board/nx823/Makefile b/board/nx823/Makefile new file mode 100644 index 000000000..35b84288d --- /dev/null +++ b/board/nx823/Makefile @@ -0,0 +1,40 @@ +# +# (C) Copyright 2001 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# 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 +# + +include $(TOPDIR)/config.mk + +LIB	= lib$(BOARD).a + +OBJS	= $(BOARD).o flash.o + +$(LIB):	.depend $(OBJS) +	$(AR) crv $@ $^ + +######################################################################### + +.depend:	Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) +		$(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ + +sinclude .depend + +######################################################################### diff --git a/board/nx823/u-boot.lds b/board/nx823/u-boot.lds new file mode 100644 index 000000000..026b39121 --- /dev/null +++ b/board/nx823/u-boot.lds @@ -0,0 +1,123 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * 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 + */ + +OUTPUT_ARCH(powerpc) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); +/* Do we need any of these for elf? +   __DYNAMIC = 0;    */ +SECTIONS +{ +  /* Read-only sections, merged into text segment: */ +  . = + SIZEOF_HEADERS; +  .interp : { *(.interp) } +  .hash          : { *(.hash)		} +  .dynsym        : { *(.dynsym)		} +  .dynstr        : { *(.dynstr)		} +  .rel.text      : { *(.rel.text)		} +  .rela.text     : { *(.rela.text) 	} +  .rel.data      : { *(.rel.data)		} +  .rela.data     : { *(.rela.data) 	} +  .rel.rodata    : { *(.rel.rodata) 	} +  .rela.rodata   : { *(.rela.rodata) 	} +  .rel.got       : { *(.rel.got)		} +  .rela.got      : { *(.rela.got)		} +  .rel.ctors     : { *(.rel.ctors)	} +  .rela.ctors    : { *(.rela.ctors)	} +  .rel.dtors     : { *(.rel.dtors)	} +  .rela.dtors    : { *(.rela.dtors)	} +  .rel.bss       : { *(.rel.bss)		} +  .rela.bss      : { *(.rela.bss)		} +  .rel.plt       : { *(.rel.plt)		} +  .rela.plt      : { *(.rela.plt)		} +  .init          : { *(.init)	} +  .plt : { *(.plt) } +  .text      : +  { +    cpu/mpc8xx/start.o	(.text) +    common/environment.o(.text) + +    *(.text) +    *(.fixup) +    *(.got1) +  } +  _etext = .; +  PROVIDE (etext = .); +  .rodata    : +  { +    *(.rodata) +    *(.rodata1) +  } +  .fini      : { *(.fini)    } =0 +  .ctors     : { *(.ctors)   } +  .dtors     : { *(.dtors)   } + +  /* Read-write section, merged into data segment: */ +  . = (. + 0x00FF) & 0xFFFFFF00; +  _erotext = .; +  PROVIDE (erotext = .); +  .reloc   : +  { +    *(.got) +    _GOT2_TABLE_ = .; +    *(.got2) +    _FIXUP_TABLE_ = .; +    *(.fixup) +  } +  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; +  __fixup_entries = (. - _FIXUP_TABLE_)>>2; + +  .data    : +  { +    *(.data) +    *(.data1) +    *(.sdata) +    *(.sdata2) +    *(.dynamic) +    CONSTRUCTORS +  } +  _edata  =  .; +  PROVIDE (edata = .); + +  __start___ex_table = .; +  __ex_table : { *(__ex_table) } +  __stop___ex_table = .; + +  . = ALIGN(256); +  __init_begin = .; +  .text.init : { *(.text.init) } +  .data.init : { *(.data.init) } +  . = ALIGN(256); +  __init_end = .; + +  __bss_start = .; +  .bss       : +  { +   *(.sbss) *(.scommon) +   *(.dynbss) +   *(.bss) +   *(COMMON) +  } +  _end = . ; +  PROVIDE (end = .); +} + diff --git a/board/siemens/IAD210/atm.h b/board/siemens/IAD210/atm.h new file mode 100644 index 000000000..f92f3fd85 --- /dev/null +++ b/board/siemens/IAD210/atm.h @@ -0,0 +1,293 @@ +typedef unsigned char  uint8; +typedef unsigned short uint16; +typedef unsigned int   uint32; +typedef volatile unsigned char  vuint8; +typedef volatile unsigned short vuint16; +typedef volatile unsigned int   vuint32; + + +#define DPRAM_ATM CFG_IMMR + 0x3000 + +#define ATM_DPRAM_BEGIN  (DPRAM_ATM - CFG_IMMR - 0x2000) +#define NUM_CONNECTIONS  1 +#define SAR_RXB_SIZE     1584 +#define AM_HMASK         0x0FFFFFF0 + +#define NUM_CT_ENTRIES           (NUM_CONNECTIONS) +#define NUM_TCTE_ENTRIES         (NUM_CONNECTIONS) +#define NUM_AM_ENTRIES           (NUM_CONNECTIONS+1) +#define NUM_AP_ENTRIES           (NUM_CONNECTIONS+1) +#define NUM_MPHYPT_ENTRIES       1 +#define NUM_APCP_ENTRIES         1 +#define NUM_APCT_PRIO_1_ENTRIES  146 /* Determines minimum rate */ +#define NUM_TQ_ENTRIES           12 + +#define SIZE_OF_CT_ENTRY         64 +#define SIZE_OF_TCTE_ENTRY       32 +#define SIZE_OF_AM_ENTRY         4 +#define SIZE_OF_AP_ENTRY         2 +#define SIZE_OF_MPHYPT_ENTRY     2 +#define SIZE_OF_APCP_ENTRY       32 +#define SIZE_OF_APCT_ENTRY       2 +#define SIZE_OF_TQ_ENTRY         2 + +#define CT_BASE           ((ATM_DPRAM_BEGIN + 63) & 0xFFC0) /*64*/ +#define TCTE_BASE         (CT_BASE + NUM_CT_ENTRIES * SIZE_OF_CT_ENTRY) /*32*/ +#define APCP_BASE         (TCTE_BASE + NUM_TCTE_ENTRIES * SIZE_OF_TCTE_ENTRY)  /*32*/ +#define AM_BEGIN          (APCP_BASE + NUM_APCP_ENTRIES * SIZE_OF_APCP_ENTRY) /*4*/ +#define AM_BASE           (AM_BEGIN + (NUM_AM_ENTRIES - 1) * SIZE_OF_AM_ENTRY) +#define AP_BEGIN          (AM_BEGIN + NUM_AM_ENTRIES * SIZE_OF_AM_ENTRY) /*2*/ +#define AP_BASE           (AP_BEGIN + (NUM_AP_ENTRIES - 1) * SIZE_OF_AP_ENTRY) +#define MPHYPT_BASE       (AP_BEGIN + NUM_AP_ENTRIES * SIZE_OF_AP_ENTRY) /*2*/ +#define APCT_PRIO_1_BASE  (MPHYPT_BASE + NUM_MPHYPT_ENTRIES * SIZE_OF_MPHYPT_ENTRY) /*2*/ +#define TQ_BASE           (APCT_PRIO_1_BASE + NUM_APCT_PRIO_1_ENTRIES * SIZE_OF_APCT_ENTRY) /*2*/ +#define ATM_DPRAM_SIZE    ((TQ_BASE + NUM_TQ_ENTRIES * SIZE_OF_TQ_ENTRY) - ATM_DPRAM_BEGIN) + +#define CT_PTR(base)      ((struct ct_entry_t *)((char *)(base) + 0x2000 + CT_BASE)) +#define TCTE_PTR(base)    ((struct tcte_entry_t *)((char *)(base) + 0x2000 + TCTE_BASE)) +#define AM_PTR(base)      ((uint32 *)((char *)(base) + 0x2000 + AM_BASE)) +#define AP_PTR(base)      ((uint16 *)((char *)(base) + 0x2000 + AP_BASE)) +#define MPHYPT_PTR(base)  ((uint16 *)((char *)(base) + 0x2000 + MPHYPT_BASE)) +#define APCP_PTR(base)    ((struct apc_params_t *)((char*)(base) + 0x2000 + APCP_BASE)) +#define APCT1_PTR(base)   ((uint16 *)((char *)(base) + 0x2000 + APCT_PRIO_1_BASE)) +#define APCT2_PTR(base)   ((uint16 *)((char *)(base) + 0x2000 + APCT_PRIO_2_BASE)) +#define APCT3_PTR(base)   ((uint16 *)((char *)(base) + 0x2000 + APCT_PRIO_3_BASE)) +#define TQ_PTR(base)      ((uint16 *)((char *)(base) + 0x2000 + TQ_BASE)) + +/* SAR registers */ +#define RBDBASE(base)	  ((vuint32 *)(base + 0x3F00)) /* Base address of RxBD-List */ +#define SRFCR(base)	  ((vuint8 *)(base + 0x3F04))  /* DMA Receive function code */ +#define SRSTATE(base)	  ((vuint8 *)(base + 0x3F05))  /* DMA Receive status */ +#define MRBLR(base)	  ((vuint16 *)(base + 0x3F06)) /* Init to 0 for ATM */ +#define RSTATE(base)	  ((vuint32 *)(base + 0x3F08)) /* Do not write to */ +#define R_CNT(base)	  ((vuint16 *)(base + 0x3F10)) /* Do not write to */ +#define STFCR(base)	  ((vuint8 *)(base + 0x3F12))  /* DMA Transmit function code */ +#define STSTATE(base)	  ((vuint8 *)(base + 0x3F13))  /* DMA Transmit status */ +#define TBDBASE(base)	  ((vuint32 *)(base + 0x3F14)) /* Base address of TxBD-List */ +#define TSTATE(base)	  ((vuint32 *)(base + 0x3F18)) /* Do not write to */ +#define COMM_CH(base)	  ((vuint16 *)(base + 0x3F1C)) /* Command channel */ +#define STCHNUM(base)	  ((vuint16 *)(base + 0x3F1E)) /* Do not write to */ +#define T_CNT(base)	  ((vuint16 *)(base + 0x3F20)) /* Do not write to */ +#define CTBASE(base)	  ((vuint16 *)(base + 0x3F22)) /* Base address of Connection-table */ +#define ECTBASE(base)	  ((vuint32 *)(base + 0x3F24)) /* Valid only for external Conn.-table */ +#define INTBASE(base)	  ((vuint32 *)(base + 0x3F28)) /* Base address of Interrupt-table */ +#define INTPTR(base)	  ((vuint32 *)(base + 0x3F2C)) /* Pointer to Interrupt-queue */ +#define C_MASK(base)	  ((vuint32 *)(base + 0x3F30)) /* CRC-mask */ +#define SRCHNUM(base)	  ((vuint16 *)(base + 0x3F34)) /* Do not write to */ +#define INT_CNT(base)	  ((vuint16 *)(base + 0x3F36)) /* Interrupt-Counter */ +#define INT_ICNT(base)	  ((vuint16 *)(base + 0x3F38)) /* Interrupt threshold */ +#define TSTA(base)	  ((vuint16 *)(base + 0x3F3A)) /* Time-stamp-address */ +#define OLDLEN(base)	  ((vuint16 *)(base + 0x3F3C)) /* Do not write to */ +#define SMRBLR(base)	  ((vuint16 *)(base + 0x3F3E)) /* SAR max RXBuffer length */ +#define EHEAD(base)	  ((vuint32 *)(base + 0x3F40)) /* Valid for serial mode */ +#define EPAYLOAD(base)	  ((vuint32 *)(base + 0x3F44)) /* Valid for serial mode */ +#define TQBASE(base)	  ((vuint16 *)(base + 0x3F48)) /* Base address of Tx queue */ +#define TQEND(base)	  ((vuint16 *)(base + 0x3F4A)) /* End address of Tx queue */ +#define TQAPTR(base)	  ((vuint16 *)(base + 0x3F4C)) /* TQ APC pointer */ +#define TQTPTR(base)	  ((vuint16 *)(base + 0x3F4E)) /* TQ Tx pointer */ +#define APCST(base)	  ((vuint16 *)(base + 0x3F50)) /* APC status */ +#define APCPTR(base)	  ((vuint16 *)(base + 0x3F52)) /* APC parameter pointer */ +#define HMASK(base)	  ((vuint32 *)(base + 0x3F54)) /* Header mask */ +#define AMBASE(base)	  ((vuint16 *)(base + 0x3F58)) /* Address match table base */ +#define AMEND(base)	  ((vuint16 *)(base + 0x3F5A)) /* Address match table end */ +#define APBASE(base)	  ((vuint16 *)(base + 0x3F5C)) /* Address match parameter */ +#define FLBASE(base)	  ((vuint32 *)(base + 0x3F54)) /* First-level table base */ +#define SLBASE(base)	  ((vuint32 *)(base + 0x3F58)) /* Second-level table base */ +#define FLMASK(base)	  ((vuint16 *)(base + 0x3F5C)) /* First-level mask */ +#define ECSIZE(base)	  ((vuint16 *)(base + 0x3F5E)) /* Valid for extended mode */ +#define APCT_REAL(base)	  ((vuint32 *)(base + 0x3F60)) /* APC 32 bit counter */ +#define R_PTR(base)	  ((vuint32 *)(base + 0x3F64)) /* Do not write to */ +#define RTEMP(base)	  ((vuint32 *)(base + 0x3F68)) /* Do not write to */ +#define T_PTR(base)	  ((vuint32 *)(base + 0x3F6C)) /* Do not write to */ +#define TTEMP(base)	  ((vuint32 *)(base + 0x3F70)) /* Do not write to */ + +/* ESAR registers */ +#define FMCTIMESTMP(base) ((vuint32 *)(base + 0x3F80)) /* Perf.Mon.Timestamp */ +#define FMCTEMPLATE(base) ((vuint32 *)(base + 0x3F84)) /* Perf.Mon.Template */ +#define PMPTR(base)       ((vuint16 *)(base + 0x3F88)) /* Perf.Mon.Table */ +#define PMCHANNEL(base)	  ((vuint16 *)(base + 0x3F8A)) /* Perf.Mon.Channel */ +#define MPHYST(base)	  ((vuint16 *)(base + 0x3F90)) /* Multi-PHY Status */ +#define TCTEBASE(base)	  ((vuint16 *)(base + 0x3F92)) /* Internal TCT Extension Base */ +#define ETCTEBASE(base)	  ((vuint32 *)(base + 0x3F94)) /* External TCT Extension Base */ +#define COMM_CH2(base)	  ((vuint32 *)(base + 0x3F98)) /* 2nd command channel word */ +#define STATBASE(base)	  ((vuint16 *)(base + 0x3F9C)) /* Statistics table pointer */ + +/* UTOPIA Mode Register */ +#define UTMODE(base)      (CAST(vuint32 *)(base + 0x0978)) + +/* SAR commands */ +#define TRANSMIT_CHANNEL_ACTIVATE_CMD   0x0FC1 +#define TRANSMIT_CHANNEL_DEACTIVATE_CMD 0x1FC1 +#define STOP_TRANSMIT_CMD               0x2FC1 +#define RESTART_TRANSMIT_CMD            0x3FC1 +#define STOP_RECEIVE_CMD                0x4FC1 +#define RESTART_RECEIVE_CMD             0x5FC1 +#define APC_BYPASS_CMD                  0x6FC1 +#define MEM_WRITE_CMD                   0x7FC1 +#define CPCR_FLG                        0x0001 + +/* INT flags */ +#define INT_VALID	0x80000000 +#define INT_WRAP	0x40000000 +#define INT_APCO	0x00800000 +#define INT_TQF		0x00200000 +#define INT_RXF		0x00080000 +#define INT_BSY		0x00040000 +#define INT_TXB		0x00020000 +#define INT_RXB		0x00010000 + +#define NUM_INT_ENTRIES   80 +#define SIZE_OF_INT_ENTRY 4 + +struct apc_params_t +{ +  vuint16 apct_base1;	/* APC Table - First Priority Base pointer */ +  vuint16 apct_end1;	/* First APC Table - Length */ +  vuint16 apct_ptr1;	/* First APC Table Pointer */ +  vuint16 apct_sptr1;	/* APC Table First Priority Service pointer */ +  vuint16 etqbase;	/* Enhanced Transmit Queue Base pointer */ +  vuint16 etqend;	/* Enhanced Transmit Queue End pointer */ +  vuint16 etqaptr;	/* Enhanced Transmit Queue APC pointer */ +  vuint16 etqtptr;	/* Enhanced Transmit Queue Transmitter pointer */ +  vuint16 apc_mi;	/* APC - Max Iteration */ +  vuint16 ncits;	/* Number of Cells In TimeSlot  */ +  vuint16 apcnt;	/* APC - N Timer */ +  vuint16 reserved1;	/* reserved */ +  vuint16 eapcst;	/* APC status */ +  vuint16 ptp_counter;	/* PTP queue length */ +  vuint16 ptp_txch;	/* PTP channel */ +  vuint16 reserved2;	/* reserved */ +}; + +struct ct_entry_t +{ +  /* RCT */ +  unsigned fhnt	      : 1; +  unsigned pm_rct     : 1; +  unsigned reserved0  : 6; +  unsigned hec        : 1; +  unsigned clp	      : 1; +  unsigned cng_ncrc   : 1; +  unsigned inf_rct    : 1; +  unsigned cngi_ptp   : 1; +  unsigned cdis_rct   : 1; +  unsigned aal_rct    : 2; +  uint16 rbalen; +  uint32 rcrc; +  uint32 rb_ptr; +  uint16 rtmlen; +  uint16 rbd_ptr; +  uint16 rbase; +  uint16 tstamp; +  uint16 imask; +  unsigned ft	      : 2; +  unsigned nim	      : 1; +  unsigned reserved1  : 2; +  unsigned rpmt	      : 6; +  unsigned reserved2  : 5; +  uint8 reserved3[8]; +  /* TCT */ +  unsigned reserved4  : 1; +  unsigned pm_tct     : 1; +  unsigned reserved5  : 6; +  unsigned pc	      : 1; +  unsigned reserved6  : 2; +  unsigned inf_tct    : 1; +  unsigned cr10       : 1; +  unsigned cdis_tct   : 1; +  unsigned aal_tct    : 2; +  uint16 tbalen; +  uint32 tcrc; +  uint32 tb_ptr; +  uint16 ttmlen; +  uint16 tbd_ptr; +  uint16 tbase; +  unsigned reserved7  : 5; +  unsigned tpmt	      : 6; +  unsigned reserved8  : 3; +  unsigned avcf	      : 1; +  unsigned act	      : 1; +  uint32 chead; +  uint16 apcl; +  uint16 apcpr; +  unsigned out	      : 1; +  unsigned bnr        : 1; +  unsigned tservice   : 2; +  unsigned apcp	      : 12; +  uint16 apcpf; +}; + +struct tcte_entry_t +{ +  unsigned res1       : 4; +  unsigned scr        : 12; +  uint16 scrf; +  uint16 bt; +  uint16 buptrh; +  uint32 buptrl; +  unsigned vbr2       : 1; +  unsigned res2       : 15; +  uint16 oobr; +  uint16 res3[8]; +}; + +#define SIZE_OF_RBD  12 +#define SIZE_OF_TBD  12 + +struct atm_bd_t +{ +  vuint16 flags; +  vuint16 length; +  unsigned char * buffer_ptr; +  vuint16 cpcs_uu_cpi; +  vuint16 reserved; +}; + +/* BD flags */ +#define EMPTY		0x8000 +#define READY		0x8000 +#define WRAP		0x2000 +#define INTERRUPT	0x1000 +#define LAST		0x0800 +#define FIRST		0x0400 +#define OAM             0x0400 +#define CONTINUOUS	0x0200 +#define HEC_ERROR	0x0080 +#define CELL_LOSS	0x0040 +#define CONGESTION	0x0020 +#define ABORT		0x0010 +#define LEN_ERROR	0x0002 +#define CRC_ERROR	0x0001 + +struct atm_connection_t +{ +  struct atm_bd_t * rbd_ptr; +  int num_rbd; +  struct atm_bd_t * tbd_ptr; +  int num_tbd; +  struct ct_entry_t * ct_ptr; +  struct tcte_entry_t * tcte_ptr; +  void * drv; +  void (* notify)(void * drv, int event); +}; + +struct atm_driver_t +{ +  int loaded; +  int started; +  char * csram; +  int csram_size; +  uint32 * am_top; +  uint16 * ap_top; +  uint32 * int_reload_ptr; +  uint32 * int_serv_ptr; +  struct atm_bd_t * rbd_base_ptr; +  struct atm_bd_t * tbd_base_ptr; +  unsigned linerate_in_bps; +}; + +extern struct atm_connection_t g_conn[NUM_CONNECTIONS]; +extern struct atm_driver_t g_atm; + +extern int    atmLoad(void); +extern void   atmUnload(void); diff --git a/disk/part_iso.h b/disk/part_iso.h new file mode 100644 index 000000000..34adbb2e8 --- /dev/null +++ b/disk/part_iso.h @@ -0,0 +1,171 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland, d.peter@mpl.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, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +#ifndef _PART_CD_H +#define _PART_CD_H + +#define BRVD	0x11 +#define PVD_OFFSET 0x10 + + +typedef struct iso_boot_rec { +	unsigned char desctype;			/* type of Volume descriptor: 0 = boot record, 1 = primary, 2 = Supplement, 3 = volume part 0xff trminator */ +	unsigned char stand_ident[5]; /* "CD001" */ +	unsigned char vers;					/* Version */ +	char					ident_str[0x20]; /* Ident String "EL TORITO SPECIFICATION" */ +	unsigned char unused[0x20];		/* unused */ +	unsigned char pointer[4];		/* absolute pointer to Boot Catalog */ +} iso_boot_rec_t; + + +typedef struct iso_pri_rec { +	unsigned char desctype;			/* type of Volume descriptor: 0 = boot record, 1 = primary, 2 = Supplement, 3 = volume part 0xff trminator */ +	unsigned char stand_ident[5]; /* "CD001" */ +	unsigned char vers;					/* Version */ + 	unsigned char unused; + 	char 					sysid[32];		/* system Identifier */ +	char					volid[32];		/* volume Identifier */ +	unsigned char zeros1[8];		/* unused */ +	unsigned long volsiz_LE;		/* volume size Little Endian */ +	unsigned long volsiz_BE;		/* volume size Big Endian */ +	unsigned char zeros2[32];		/* unused */ +	unsigned short setsize_LE;	/* volume set size LE */ +	unsigned short setsize_BE;	/* volume set size BE */ +	unsigned short seqnum_LE;		/* volume sequence number LE */ +	unsigned short seqnum_BE;		/* volume sequence number BE */ +	unsigned short secsize_LE;	/* sector size LE */ +	unsigned short secsize_BE;	/* sector size BE */ +	unsigned long pathtablen_LE;/* Path Table size LE */ +	unsigned long pathtablen_BE;/* Path Table size BE */ +	unsigned long firstsek_LEpathtab1_LE; /* location of first occurrence of little endian type path table */ + 	unsigned long firstsek_LEpathtab2_LE; /* location of optional occurrence of little endian type path table */ + 	unsigned long firstsek_BEpathtab1_BE; /* location of first occurrence of big endian type path table */ + 	unsigned long firstsek_BEpathtab2_BE; /* location of optional occurrence of big endian type path table */ + 	unsigned char rootdir[34];	/* directory record for root dir */ + 	char 					volsetid[128];/* Volume set identifier */ + 	char					pubid[128];		/* Publisher identifier */ + 	char 					dataprepid[128]; /* data preparer identifier */ + 	char 					appid[128];		/* application identifier */ + 	char 					copyr[37];		/* copyright string */ + 	char 					abstractfileid[37]; /* abstract file identifier */ + 	char					bibliofileid[37]; /* bibliographic file identifier */ + 	unsigned char creationdate[17]; /* creation date */ + 	unsigned char modify[17];		/* modification date */ + 	unsigned char expire[17];		/* expiring date */ + 	unsigned char effective[17];/* effective date */ + 	unsigned char filestruc_ver;	/* file structur version */ +} iso_pri_rec_t; + +typedef struct iso_sup_rec { +	unsigned char desctype;			/* type of Volume descriptor: 0 = boot record, 1 = primary, 2 = Supplement, 3 = volume part 0xff trminator */ +	unsigned char stand_ident[5]; /* "CD001" */ +	unsigned char vers;					/* Version */ + 	unsigned char volumeflags;	/* if bit 0 = 0 => all escape sequences are according ISO 2375 */ + 	char 					sysid[32];		/* system Identifier */ +	char					volid[32];		/* volume Identifier */ +	unsigned char zeros1[8];		/* unused */ + 	unsigned long volsiz_LE;		/* volume size Little Endian */ + 	unsigned long volsiz_BE;		/* volume size Big Endian */ + 	unsigned char escapeseq[32];/* Escape sequences */ +	unsigned short setsize_LE;	/* volume set size LE */ + 	unsigned short setsize_BE;	/* volume set size BE */ + 	unsigned short seqnum_LE;		/* volume sequence number LE */ + 	unsigned short seqnum_BE;		/* volume sequence number BE */ + 	unsigned short secsize_LE;	/* sector size LE */ + 	unsigned short secsize_BE;	/* sector size BE */ +	unsigned long pathtablen_LE;/* Path Table size LE */ +	unsigned long pathtablen_BE;/* Path Table size BE */ +	unsigned long firstsek_LEpathtab1_LE; /* location of first occurrence of little endian type path table */ + 	unsigned long firstsek_LEpathtab2_LE; /* location of optional occurrence of little endian type path table */ + 	unsigned long firstsek_BEpathtab1_BE; /* location of first occurrence of big endian type path table */ + 	unsigned long firstsek_BEpathtab2_BE; /* location of optional occurrence of big endian type path table */ + 	unsigned char rootdir[34];	/* directory record for root dir */ + 	char 					volsetid[128];/* Volume set identifier */ + 	char					pubid[128];		/* Publisher identifier */ + 	char 					dataprepid[128]; /* data preparer identifier */ + 	char 					appid[128];		/* application identifier */ + 	char 					copyr[37];		/* copyright string */ + 	char 					abstractfileid[37]; /* abstract file identifier */ + 	char					bibliofileid[37]; /* bibliographic file identifier */ + 	unsigned char creationdate[17]; /* creation date */ + 	unsigned char modify[17];		/* modification date */ + 	unsigned char expire[17];		/* expiring date */ + 	unsigned char effective[17];/* effective date */ + 	unsigned char filestruc_ver;	/* file structur version */ +}iso_sup_rec_t; + +typedef struct iso_part_rec { +	unsigned char desctype;			/* type of Volume descriptor: 0 = boot record, 1 = primary, 2 = Supplement, 3 = volume part 0xff trminator */ +	unsigned char stand_ident[5]; /* "CD001" */ +	unsigned char vers;					/* Version */ + 	unsigned char unused; + 	char 					sysid[32];		 /* system Identifier */ +	char					volid[32]; 		/* volume partition Identifier */ +	unsigned long partloc_LE;		/* volume partition location LE */ +	unsigned long partloc_BE;		/* volume partition location BE */ +	unsigned long partsiz_LE;		/* volume partition size LE */ +	unsigned long partsiz_BE;		/* volume partition size BE */ +}iso_part_rec_t; + + + + +typedef struct iso_val_entry { +	unsigned char	header_id;		/* Header ID must be 0x01 */ +	unsigned char	platform;			/* Platform: 0=x86, 1=PowerPC, 2=MAC */ +	unsigned char res[2];				/* reserved */ +	char 					manu_str[0x18]; /* Ident String of manufacturer/developer */ +	unsigned char chk_sum[2]; 	/* Check sum (all words must be zero)  */ +	unsigned char key[2];				/* key[0]=55, key[1]=0xAA */ +} iso_val_entry_t; + +typedef struct iso_header_entry { +	unsigned char	header_id;		/* Header ID must be 0x90 or 0x91 */ +	unsigned char	platform;			/* Platform: 0=x86, 1=PowerPC, 2=MAC */ +	unsigned char numentry[2];	/* number of entries */ +	char 					id_str[0x1C]; /* Ident String of sectionr */ +} iso_header_entry_t; + + +typedef struct iso_init_def_entry { +	unsigned char	boot_ind;			/* Boot indicator 0x88=bootable 0=not bootable */ +	unsigned char	boot_media;		/* boot Media Type: 0=no Emulation, 1=1.2MB floppy, 2=1.44MB floppy, 3=2.88MB floppy 4=hd (0x80) */ +	unsigned char ld_seg[2];		/* Load segment (flat model=addr/10) */ +	unsigned char systype; 			/* System Type copy of byte5 of part table */ +	unsigned char res;					/* reserved */ +	unsigned char sec_cnt[2];		/* sector count in VIRTUAL Blocks (0x200) */ +	unsigned char rel_block_addr[4];	/* relative Block address */ +} iso_init_def_entry_t; + + +void print_partition_cd(int dev); + + + + + + + + +#endif /* _PART_CD_H */ + + diff --git a/fs/Makefile b/fs/Makefile new file mode 100644 index 000000000..9ed0f1e5a --- /dev/null +++ b/fs/Makefile @@ -0,0 +1,30 @@ +# +# (C) Copyright 2000, 2001 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# 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 +# +# + +SUBDIRS	:= jffs2 + +.depend all: +	@for dir in $(SUBDIRS) ; do \ +		$(MAKE) -C $$dir $@ ; done + diff --git a/fs/jffs2/Makefile b/fs/jffs2/Makefile new file mode 100644 index 000000000..10fbf7c2c --- /dev/null +++ b/fs/jffs2/Makefile @@ -0,0 +1,47 @@ +# +# (C) Copyright 2000, 2001 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# 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 +# + +include $(TOPDIR)/config.mk + +LIB	= libjffs2.a + +AOBJS	= +COBJS	= jffs2_1pass.o compr_rtime.o compr_rubin.o compr_zlib.o mini_inflate.o +OBJS	= $(AOBJS) $(COBJS) + +#CPPFLAGS += + +all:	$(LIB) $(AOBJS) + +$(LIB):	.depend $(OBJS) +	$(AR) crv $@ $(OBJS) + + +######################################################################### + +.depend:	Makefile $(AOBJS:.o=.S) $(COBJS:.o=.c) +		$(CC) -M $(CFLAGS) $(AOBJS:.o=.S) $(COBJS:.o=.c) > $@ + +sinclude .depend + +######################################################################### diff --git a/include/bedbug/bedbug.h b/include/bedbug/bedbug.h new file mode 100644 index 000000000..471215ee0 --- /dev/null +++ b/include/bedbug/bedbug.h @@ -0,0 +1,42 @@ +/* $Id$ */ + +#ifndef _BEDBUG_H +#define _BEDBUG_H + +#ifndef NULL +#define NULL	0 +#endif + +#define _USE_PROTOTYPES + +#ifndef isblank +#define isblank(c) isspace((int)(c)) +#endif + +#ifndef __P +#if defined(_USE_PROTOTYPES) && (defined(__STDC__) || defined(__cplusplus)) +#define __P(protos)	protos		/* full-blown ANSI C */ +#else +#define __P(protos)	()		/* traditional C preprocessor */ +#endif +#endif + +#define assert( condition ) if( (condition) ) _exit(0) + +#endif /* _BEDBUG_H */ + + +/* + * Copyright (c) 2001 William L. Pitts + * 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. + */ diff --git a/include/bedbug/ppc.h b/include/bedbug/ppc.h new file mode 100644 index 000000000..9cc8f9fa3 --- /dev/null +++ b/include/bedbug/ppc.h @@ -0,0 +1,413 @@ +/* $Id$ */ + +#ifndef _PPC_H +#define _PPC_H + +/*====================================================================== + * + *  OPERANDS + * + *======================================================================*/ + +enum OP_FIELD { +  O_AA = 1, O_BD, O_BI, O_BO, O_crbD, O_crbA, O_crbB, O_CRM, O_d, O_frC, O_frD, +  O_frS, O_IMM, O_LI, O_LK, O_MB, O_ME, O_NB, O_OE, O_rA, O_rB, O_Rc, O_rD, +  O_rS, O_SH, O_SIMM, O_SR, O_TO, O_UIMM, O_crfD, O_crfS, O_L, O_spr, O_tbr, +  O_cr2 }; + +struct operand { +  enum OP_FIELD	field;		/* The operand identifier from the +				   enum above */ + +  char *	name;		/* Symbolic name of this operand */ + +  unsigned int	bits;		/* The number of bits used by this +				   operand */ + +  unsigned int	shift;		/* How far to the right the operand +				   should be shifted so that it is +				   aligned at the beginning of the +				   word */ + +  unsigned int	hint;		/* A bitwise-inclusive-OR of the +				   values shown below.  These are used +				   tell the disassembler how to print +				   this operand */ +}; + +/* Values for operand hint */ +#define OH_SILENT	0x01	/* dont print this operand */ +#define OH_ADDR		0x02	/* this operand is an address */ +#define OH_REG		0x04	/* this operand is a register */ +#define OH_SPR		0x08	/* this operand is an SPR */ +#define OH_TBR		0x10	/* this operand is a TBR */ +#define OH_OFFSET	0x20	/* this operand is an offset */ +#define OH_LITERAL      0x40    /* a literal string */ + + +/*====================================================================== + * + *  OPCODES + * + *======================================================================*/ + +/* From the MPCxxx instruction set documentation, all instructions are + * 32 bits long and word aligned.  Bits 0-5 always specify the primary + * opcode.  Many instructions also have an extended opcode. + */ + +#define GET_OPCD(i) (((unsigned long)(i) >> 26) & 0x3f) +#define MAKE_OPCODE(i) ((((unsigned long)(i)) & 0x3f) << 26) + +/* The MPC860 User's Manual, Appendix D.4 contains the definitions of the + * instruction forms + */ + + +/*------------------------------------------------- + *              I-Form Instructions: + * bX + *------------------------------------------------- + * OPCD |           LI                       |AA|LK + *-------------------------------------------------*/ + +#define I_OPCODE(i,aa,lk) (MAKE_OPCODE(i) | (((aa) & 0x1) << 1) | ((lk) & 0x1)) +#define I_MASK I_OPCODE(0x3f,0x1,0x1) + + +/*------------------------------------------------- + *              B-Form Instructions: + * bcX + *------------------------------------------------- + * OPCD |    BO   |  BI  |   BD              |AA|LK + *-------------------------------------------------*/ + +#define B_OPCODE(i,aa,lk) (MAKE_OPCODE(i) | (((aa) & 0x1) << 1) | ((lk) & 0x1)) +#define B_MASK B_OPCODE(0x3f,0x1,0x1) + + +/*------------------------------------------------- + *             SC-Form Instructions: + * sc + *------------------------------------------------- + * OPCD | 00000 | 00000 | 00000000000000       |1|0 + *-------------------------------------------------*/ + +#define SC_OPCODE(i) (MAKE_OPCODE(i) | 0x2) +#define SC_MASK SC_OPCODE(0x3f) + + +/*------------------------------------------------- + *             D-Form Instructions: + * addi addic addic. addis andi. andis. cmpi cmpli + * lbz lbzu lha lhau lhz lhzu lmw lwz lwzu mulli + * ori oris stb stbu sth sthu stmw stw stwu subfic + * twi xori xoris + *------------------------------------------------- + * OPCD |   D    |   A   |            d + * OPCD |   D    |   A   |           SIMM + * OPCD |   S    |   A   |            d + * OPCD |   S    |   A   |           UIMM + * OPCD |crfD|0|L|   A   |           SIMM + * OPCD |crfD|0|L|   A   |           UIMM + * OPCD |   TO   |   A   |           SIMM + *-------------------------------------------------*/ + +#define D_OPCODE(i) MAKE_OPCODE(i) +#define D_MASK MAKE_OPCODE(0x3f) + + +/*------------------------------------------------- + *            DS-Form Instructions: + * (none supported by MPC860) + *------------------------------------------------- + * OPCD |   D    |   A   |          ds          |XO + * OPCD |   S    |   A   |          ds          |XO + *-------------------------------------------------*/ + +#define DS_OPCODE(i,xo) (MAKE_OPCODE(i) | ((xo) & 0x3)) +#define DS_MASK DS_OPCODE(0x3f,0x1) + + +/*--------------------------------------------------- + *            X-Form Instructions: + * andX andcX cmp cmpl cntlzwX dcbf dcbi dcbst dcbt + * dcbtst dcbz eciwx ecowx eieio eqvX extsbX extshX + * icbi lbzux lbxz lhaux lhax lhbrx lhzux lhxz lswi + * lswx lwarx lwbrx lwzux lwxz mcrfs mcrxr mfcr + * mfmsr mfsr mfsrin mtmsr mtsr mtsrin nandX norX + * orX orcX slwX srawX srawiX srwX stbux stbx + * sthbrx sthuxsthx stswi stswx stwbrx stwcx. stwux + * stwx sync tlbie tlbld tlbli tlbsync tw xorX + *--------------------------------------------------- + * OPCD |   D    |    A   |    B   |      XO      |0 + * OPCD |   D    |    A   |   NB   |      XO      |0 + * OPCD |   D    |  00000 |    B   |      XO      |0 + * OPCD |   D    |  00000 |  00000 |      XO      |0 + * OPCD |   D    |0|  SR  |  00000 |      XO      |0 + * OPCD |   S    |    A   |    B   |      XO      |Rc + * OPCD |   S    |    A   |    B   |      XO      |1 + * OPCD |   S    |    A   |    B   |      XO      |0 + * OPCD |   S    |    A   |   NB   |      XO      |0 + * OPCD |   S    |    A   |  00000 |      XO      |Rc + * OPCD |   S    |  00000 |    B   |      XO      |0 + * OPCD |   S    |  00000 |  00000 |      XO      |0 + * OPCD |   S    |0|  SR  |  00000 |      XO      |0 + * OPCD |   S    |    A   |   SH   |      XO      |Rc + * OPCD |crfD|0|L|    A   |   SH   |      XO      |0 + * OPCD |crfD |00|    A   |    B   |      XO      |0 + * OPCD |crfD |00|crfS |00|  00000 |      XO      |0 + * OPCD |crfD |00|  00000 |  00000 |      XO      |0 + * OPCD |crfD |00|  00000 | IMM  |0|      XO      |Rc + * OPCD |   TO   |    A   |    B   |      XO      |0 + * OPCD |   D    |  00000 |    B   |      XO      |Rc + * OPCD |   D    |  00000 |  00000 |      XO      |Rc + * OPCD |  crbD  |  00000 |  00000 |      XO      |Rc + * OPCD |  00000 |    A   |    B   |      XO      |0 + * OPCD |  00000 |  00000 |    B   |      XO      |0 + * OPCD |  00000 |  00000 |  00000 |      XO      |0 + *---------------------------------------------------*/ + +#define X_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \ +			   ((rc) & 0x1)) +#define X_MASK X_OPCODE(0x3f,0x3ff,0x1) + + +/*--------------------------------------------------- + *            XL-Form Instructions: + * bcctrX bclrX crand crandc creqv crnand crnor cror + * croc crxorisync mcrf rfi + *--------------------------------------------------- + * OPCD |   BO   |  BI    |  00000 |      XO      |LK + * OPCD |  crbD  | crbA   |  crbB  |      XO      |0 + * OPCD |crfD |00|crfS |00|  00000 |      XO      |0 + * OPCD |  00000 |  00000 |  00000 |      XO      |0 + *---------------------------------------------------*/ + +#define XL_OPCODE(i,xo,lk) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \ +			    ((lk) & 0x1)) +#define XL_MASK XL_OPCODE(0x3f,0x3ff,0x1) + + +/*--------------------------------------------------- + *            XFX-Form Instructions: + * mfspr mftb mtcrf mtspr + *--------------------------------------------------- + * OPCD |   D    |      spr        |      XO       |0 + * OPCD |   D    |0|    CRM      |0|      XO       |0 + * OPCD |   S    |      spr        |      XO       |0 + * OPCD |   D    |      tbr        |      XO       |0 + *---------------------------------------------------*/ + +#define XFX_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \ +			     ((rc) & 0x1)) +#define XFX_MASK XFX_OPCODE(0x3f,0x3ff,0x1) + + +/*--------------------------------------------------- + *            XFL-Form Instructions: + * (none supported by MPC860) + *--------------------------------------------------- + * OPCD |0|      FM     |0|   B    |      XO       |0 + *---------------------------------------------------*/ + +#define XFL_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x3ff) << 1) | \ +			     ((rc) & 0x1)) +#define XFL_MASK XFL_OPCODE(0x3f,0x3ff,0x1) + + +/*--------------------------------------------------- + *            XS-Form Instructions: + * (none supported by MPC860) + *--------------------------------------------------- + * OPCD |    S   |   A    |   sh   |      XO   |sh|LK + *---------------------------------------------------*/ + +#define XS_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x1ff) << 2) | \ +			     ((rc) & 0x1)) +#define XS_MASK XS_OPCODE(0x3f,0x1ff,0x1) + + +/*--------------------------------------------------- + *            XO-Form Instructions: + * addX addcXaddeX addmeX addzeX divwX divwuX mulhwX + * mulhwuX mullwX negX subfX subfcX subfeX subfmeX + * subfzeX + *--------------------------------------------------- + * OPCD |    D   |   A    |    B   |OE|     XO    |Rc + * OPCD |    D   |   A    |    B   |0 |     XO    |Rc + * OPCD |    D   |   A    |  00000 |OE|     XO    |Rc + *---------------------------------------------------*/ + +#define XO_OPCODE(i,xo,oe,rc) (MAKE_OPCODE(i) | (((oe) & 0x1) << 10) | \ +			       (((xo) & 0x1ff) << 1) | ((rc) & 0x1)) +#define XO_MASK XO_OPCODE(0x3f,0x1ff,0x1,0x1) + + +/*--------------------------------------------------- + *            A-Form Instructions: + * (none supported by MPC860) + *--------------------------------------------------- + * OPCD |    D   |   A    |    B   |00000|  XO    |Rc + * OPCD |    D   |   A    |    B   |  C  |  XO    |Rc + * OPCD |    D   |   A    |  00000 |  C  |  XO    |Rc + * OPCD |    D   |  00000 |    B   |00000|  XO    |Rc + *---------------------------------------------------*/ + +#define A_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x1f) << 1) | \ +			   ((rc) & 0x1)) +#define A_MASK A_OPCODE(0x3f,0x1f,0x1) + + +/*--------------------------------------------------- + *            M-Form Instructions: + * rlwimiX rlwinmX rlwnmX + *--------------------------------------------------- + * OPCD |    S   |   A    |    SH   |  MB |  ME   |Rc + * OPCD |    S   |   A    |     B   |  MB |  ME   |Rc + *---------------------------------------------------*/ + +#define M_OPCODE(i,rc) (MAKE_OPCODE(i) | ((rc) & 0x1)) +#define M_MASK M_OPCODE(0x3f,0x1) + + +/*--------------------------------------------------- + *            MD-Form Instructions: + * (none supported by MPC860) + *--------------------------------------------------- + * OPCD |    S   |   A    |    sh   |  mb | XO |sh|Rc + * OPCD |    S   |   A    |    sh   |  me | XO |sh|Rc + *---------------------------------------------------*/ + +#define MD_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0x7) << 2) | \ +			   ((rc) & 0x1)) +#define MD_MASK MD_OPCODE(0x3f,0x7,0x1) + + +/*--------------------------------------------------- + *            MDS-Form Instructions: + * (none supported by MPC860) + *--------------------------------------------------- + * OPCD |    S   |   A    |    B    |  mb | XO    |Rc + * OPCD |    S   |   A    |    B    |  me | XO    |Rc + *---------------------------------------------------*/ + +#define MDS_OPCODE(i,xo,rc) (MAKE_OPCODE(i) | (((xo) & 0xf) << 1) | \ +			   ((rc) & 0x1)) +#define MDS_MASK MDS_OPCODE(0x3f,0xf,0x1) + +#ifndef FALSE +#define FALSE 0 +#define TRUE (!FALSE) +#endif + +#define INSTRUCTION( memaddr ) ntohl(*(unsigned long *)(memaddr)) + +#define MAX_OPERANDS  8 + +struct ppc_ctx; + +struct opcode { +  unsigned long	opcode;		/* The complete opcode as produced by +				   one of the XXX_OPCODE macros above */ + +  unsigned long	mask;		/* The mask to use on an instruction +				   before comparing with the opcode +				   field to see if it matches */ + +  enum OP_FIELD	fields[MAX_OPERANDS]; +				/* An array defining the operands for +				   this opcode.  The values of the +				   array are the operand identifiers */ + +  int (*hfunc)(struct ppc_ctx *); +  				/* Address of a function to handle the given +				   mnemonic */ + +  char *	name;		/* The symbolic name of this opcode */ + +  unsigned int	hint;		/* A bitwise-inclusive-OR of the +				   values shown below.  These are used +				   tell the disassembler how to print +				   some operands for this opcode */ +}; + +/* values for opcode hints */ +#define H_RELATIVE	0x1	/* The address operand is relative */ +#define H_IMM_HIGH	0x2	/* [U|S]IMM field shifted high */ +#define H_RA0_IS_0	0x4	/* If rA = 0 then treat as literal 0 */ + +struct ppc_ctx { +  struct opcode *	op; +  unsigned long		instr; +  unsigned int		flags; +  int			datalen; +  char			data[ 256 ]; +  char			radix_fmt[ 8 ]; +  unsigned char *	virtual; +}; + + +/*====================================================================== + * + *  FUNCTIONS + * + *======================================================================*/ + +/* Values for flags as passed to various ppc routines */ +#define F_RADOCTAL	0x1	/* output radix = unsigned octal */ +#define F_RADUDECIMAL	0x2	/* output radix = unsigned decimal */ +#define F_RADSDECIMAL	0x4	/* output radix = signed decimal */ +#define F_RADHEX	0x8	/* output radix = unsigned hex */ +#define F_SIMPLE	0x10	/* use simplified mnemonics */ +#define F_SYMBOL	0x20	/* use symbol lookups for addresses */ +#define F_INSTR		0x40	/* output the raw instruction */ +#define F_LOCALMEM	0x80	/* retrieve opcodes from local memory +				   rather than from the HMI */ +#define F_LINENO	0x100	/* show line number info if available */ +#define F_VALIDONLY	0x200	/* cache: valid entries only */ + +/* Values for assembler error codes */ +#define E_ASM_BAD_OPCODE	1 +#define E_ASM_NUM_OPERANDS	2 +#define E_ASM_BAD_REGISTER	3 +#define E_ASM_BAD_SPR		4 +#define E_ASM_BAD_TBR		5 + +extern int disppc __P((unsigned char *,unsigned char *,int, +		       int (*)(const char *), unsigned long)); +extern int print_source_line __P((char *,char *,int, +				  int (*pfunc)(const char *))); +extern int find_next_address __P((unsigned char *,int,struct pt_regs *)); +extern int handle_bc __P((struct ppc_ctx *)); +extern unsigned long asmppc __P((unsigned long,char*,int*)); +extern char *asm_error_str __P((int)); + +/*====================================================================== + * + *  GLOBAL VARIABLES + * + *======================================================================*/ + +extern struct operand operands[]; +extern const unsigned int n_operands; +extern struct opcode opcodes[]; +extern const unsigned int n_opcodes; + +#endif /* _PPC_H */ + + +/* + * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks + * 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. + */ diff --git a/include/bedbug/regs.h b/include/bedbug/regs.h new file mode 100644 index 000000000..938e435c5 --- /dev/null +++ b/include/bedbug/regs.h @@ -0,0 +1,403 @@ +/* $Id$ */ + +#ifndef _REGS_H +#define _REGS_H + +/* Special Purpose Registers */ + +#define SPR_CR		-1 +#define SPR_MSR		-2 + +#define SPR_XER		1 +#define SPR_LR		8 +#define SPR_CTR		9 +#define SPR_DSISR	18 +#define SPR_DAR		19 +#define SPR_DEC		22 +#define SPR_SRR0	26 +#define SPR_SRR1	27 +#define SPR_EIE		80 +#define SPR_EID		81 +#define SPR_CMPA	144 +#define SPR_CMPB	145 +#define SPR_CMPC	146 +#define SPR_CMPD	147 +#define SPR_ICR		148 +#define SPR_DER		149 +#define SPR_COUNTA	150 +#define SPR_COUNTB	151 +#define SPR_CMPE	152 +#define SPR_CMPF	153 +#define SPR_CMPG	154 +#define SPR_CMPH	155 +#define SPR_LCTRL1	156 +#define SPR_LCTRL2	157 +#define SPR_ICTRL	158 +#define SPR_BAR		159 +#define SPR_USPRG0      256 +#define SPR_SPRG4_RO    260 +#define SPR_SPRG5_RO    261 +#define SPR_SPRG6_RO    262 +#define SPR_SPRG7_RO    263 +#define SPR_SPRG0	272 +#define SPR_SPRG1	273 +#define SPR_SPRG2	274 +#define SPR_SPRG3	275 +#define SPR_SPRG4       276 +#define SPR_SPRG5       277 +#define SPR_SPRG6       278 +#define SPR_SPRG7       279 +#define SPR_EAR         282	/* MPC603e core */ +#define SPR_TBL         284 +#define SPR_TBU         285 +#define SPR_PVR		287 +#define SPR_IC_CST	560 +#define SPR_IC_ADR	561 +#define SPR_IC_DAT	562 +#define SPR_DC_CST	568 +#define SPR_DC_ADR	569 +#define SPR_DC_DAT	570 +#define SPR_DPDR	630 +#define SPR_IMMR	638 +#define SPR_MI_CTR	784 +#define SPR_MI_AP	786 +#define SPR_MI_EPN	787 +#define SPR_MI_TWC	789 +#define SPR_MI_RPN	790 +#define SPR_MD_CTR	792 +#define SPR_M_CASID	793 +#define SPR_MD_AP	794 +#define SPR_MD_EPN	795 +#define SPR_M_TWB	796 +#define SPR_MD_TWC	797 +#define SPR_MD_RPN	798 +#define SPR_M_TW	799 +#define SPR_MI_DBCAM	816 +#define SPR_MI_DBRAM0	817 +#define SPR_MI_DBRAM1	818 +#define SPR_MD_DBCAM	824 +#define SPR_MD_DBRAM0	825 +#define SPR_MD_DBRAM1	826 +#define SPR_ZPR         944 +#define SPR_PID         945 +#define SPR_CCR0        947 +#define SPR_IAC3        948 +#define SPR_IAC4        949 +#define SPR_DVC1        950 +#define SPR_DVC2        951 +#define SPR_SGR         953 +#define SPR_DCWR        954 +#define SPR_SLER        955 +#define SPR_SU0R        956 +#define SPR_DBCR1       957 +#define SPR_ICDBDR      979 +#define SPR_ESR         980 +#define SPR_DEAR        981 +#define SPR_EVPR        982 +#define SPR_TSR         984 +#define SPR_TCR         986 +#define SPR_PIT         987 +#define SPR_SRR2        990 +#define SPR_SRR3        991 +#define SPR_DBSR        1008 +#define SPR_DBCR0       1010 +#define SPR_IABR        1010	/* MPC603e core */ +#define SPR_IAC1        1012 +#define SPR_IAC2        1013 +#define SPR_DAC1        1014 +#define SPR_DAC2        1015 +#define SPR_DCCR        1018 +#define SPR_ICCR        1019 + +/* Bits for the DBCR0 register */ +#define DBCR0_EDM	0x80000000 +#define DBCR0_IDM	0x40000000 +#define DBCR0_RST	0x30000000 +#define DBCR0_IC	0x08000000 +#define DBCR0_BT	0x04000000 +#define DBCR0_EDE	0x02000000 +#define DBCR0_TDE	0x01000000 +#define DBCR0_IA1	0x00800000 +#define DBCR0_IA2	0x00400000 +#define DBCR0_IA12	0x00200000 +#define DBCR0_IA12X	0x00100000 +#define DBCR0_IA3	0x00080000 +#define DBCR0_IA4	0x00040000 +#define DBCR0_IA34	0x00020000 +#define DBCR0_IA34X	0x00010000 +#define DBCR0_IA12T	0x00008000 +#define DBCR0_IA34T	0x00004000 +#define DBCR0_FT	0x00000001 + +/* Bits for the DBCR1 register */ +#define DBCR1_D1R	0x80000000 +#define DBCR1_D2R	0x40000000 +#define DBCR1_D1W	0x20000000 +#define DBCR1_D2W	0x10000000 +#define DBCR1_D1S	0x0C000000 +#define DBCR1_D2S	0x03000000 +#define DBCR1_DA12	0x00800000 +#define DBCR1_DA12X	0x00400000 +#define DBCR1_DV1M	0x000C0000 +#define DBCR1_DV2M	0x00030000 +#define DBCR1_DV1BE	0x0000F000 +#define DBCR1_DV2BE	0x00000F00 + +/* Bits for the DBSR register */ +#define DBSR_IC		0x80000000 +#define DBSR_BT		0x40000000 +#define DBSR_EDE	0x20000000 +#define DBSR_TIE	0x10000000 +#define DBSR_UDE	0x08000000 +#define DBSR_IA1	0x04000000 +#define DBSR_IA2	0x02000000 +#define DBSR_DR1	0x01000000 +#define DBSR_DW1	0x00800000 +#define DBSR_DR2	0x00400000 +#define DBSR_DW2	0x00200000 +#define DBSR_IDE	0x00100000 +#define DBSR_IA3	0x00080000 +#define DBSR_IA4	0x00040000 +#define DBSR_MRR	0x00000300 + +struct spr_info { +  int  spr_val; +  char spr_name[ 10 ]; +}; + +extern struct spr_info spr_map[]; +extern const unsigned int n_sprs; + + +#define SET_REGISTER( str, val ) \ +({ unsigned long __value = (val); \ +  asm volatile( str : : "r" (__value)); \ +  __value; }) + +#define	GET_REGISTER( str ) \ +({ unsigned long __value; \ +  asm volatile( str : "=r" (__value) : ); \ +  __value; }) + +#define	 GET_CR()	     GET_REGISTER( "mfcr %0" ) +#define	 SET_CR(val)	     SET_REGISTER( "mtcr %0", val ) +#define	 GET_MSR()	     GET_REGISTER( "mfmsr %0" ) +#define	 SET_MSR(val)	     SET_REGISTER( "mtmsr %0", val ) +#define	 GET_XER()	     GET_REGISTER( "mfspr %0,1" ) +#define	 SET_XER(val)	     SET_REGISTER( "mtspr 1,%0", val ) +#define	 GET_LR()	     GET_REGISTER( "mfspr %0,8" ) +#define	 SET_LR(val)	     SET_REGISTER( "mtspr 8,%0", val ) +#define	 GET_CTR()	     GET_REGISTER( "mfspr %0,9" ) +#define	 SET_CTR(val)	     SET_REGISTER( "mtspr 9,%0", val ) +#define	 GET_DSISR()	     GET_REGISTER( "mfspr %0,18" ) +#define	 SET_DSISR(val)	     SET_REGISTER( "mtspr 18,%0", val ) +#define	 GET_DAR()	     GET_REGISTER( "mfspr %0,19" ) +#define	 SET_DAR(val)	     SET_REGISTER( "mtspr 19,%0", val ) +#define	 GET_DEC()	     GET_REGISTER( "mfspr %0,22" ) +#define	 SET_DEC(val)	     SET_REGISTER( "mtspr 22,%0", val ) +#define	 GET_SRR0()	     GET_REGISTER( "mfspr %0,26" ) +#define	 SET_SRR0(val)       SET_REGISTER( "mtspr 26,%0", val ) +#define	 GET_SRR1()	     GET_REGISTER( "mfspr %0,27" ) +#define	 SET_SRR1(val)	     SET_REGISTER( "mtspr 27,%0", val ) +#define	 GET_EIE()	     GET_REGISTER( "mfspr %0,80" ) +#define	 SET_EIE(val)	     SET_REGISTER( "mtspr 80,%0", val ) +#define	 GET_EID()	     GET_REGISTER( "mfspr %0,81" ) +#define	 SET_EID(val)	     SET_REGISTER( "mtspr 81,%0", val ) +#define	 GET_CMPA()	     GET_REGISTER( "mfspr %0,144" ) +#define	 SET_CMPA(val)	     SET_REGISTER( "mtspr 144,%0", val ) +#define	 GET_CMPB()	     GET_REGISTER( "mfspr %0,145" ) +#define	 SET_CMPB(val)	     SET_REGISTER( "mtspr 145,%0", val ) +#define	 GET_CMPC()	     GET_REGISTER( "mfspr %0,146" ) +#define	 SET_CMPC(val)	     SET_REGISTER( "mtspr 146,%0", val ) +#define	 GET_CMPD()	     GET_REGISTER( "mfspr %0,147" ) +#define	 SET_CMPD(val)	     SET_REGISTER( "mtspr 147,%0", val ) +#define	 GET_ICR()	     GET_REGISTER( "mfspr %0,148" ) +#define	 SET_ICR(val)	     SET_REGISTER( "mtspr 148,%0", val ) +#define	 GET_DER()	     GET_REGISTER( "mfspr %0,149" ) +#define	 SET_DER(val)	     SET_REGISTER( "mtspr 149,%0", val ) +#define	 GET_COUNTA()	     GET_REGISTER( "mfspr %0,150" ) +#define	 SET_COUNTA(val)     SET_REGISTER( "mtspr 150,%0", val ) +#define	 GET_COUNTB()	     GET_REGISTER( "mfspr %0,151" ) +#define	 SET_COUNTB(val)     SET_REGISTER( "mtspr 151,%0", val ) +#define	 GET_CMPE()	     GET_REGISTER( "mfspr %0,152" ) +#define	 SET_CMPE(val)	     SET_REGISTER( "mtspr 152,%0", val ) +#define	 GET_CMPF()	     GET_REGISTER( "mfspr %0,153" ) +#define	 SET_CMPF(val)	     SET_REGISTER( "mtspr 153,%0", val ) +#define	 GET_CMPG()	     GET_REGISTER( "mfspr %0,154" ) +#define	 SET_CMPG(val)	     SET_REGISTER( "mtspr 154,%0", val ) +#define	 GET_CMPH()	     GET_REGISTER( "mfspr %0,155" ) +#define	 SET_CMPH(val)	     SET_REGISTER( "mtspr 155,%0", val ) +#define  GET_LCTRL1()	     GET_REGISTER( "mfspr %0,156" ) +#define	 SET_LCTRL1(val)     SET_REGISTER( "mtspr 156,%0", val ) +#define  GET_LCTRL2()	     GET_REGISTER( "mfspr %0,157" ) +#define	 SET_LCTRL2(val)     SET_REGISTER( "mtspr 157,%0", val ) +#define  GET_ICTRL()	     GET_REGISTER( "mfspr %0,158" ) +#define	 SET_ICTRL(val)	     SET_REGISTER( "mtspr 158,%0", val ) +#define  GET_BAR()	     GET_REGISTER( "mfspr %0,159" ) +#define	 SET_BAR(val)	     SET_REGISTER( "mtspr 159,%0", val ) +#define  GET_USPRG0()	     GET_REGISTER( "mfspr %0,256" ) +#define	 SET_USPRG0(val)     SET_REGISTER( "mtspr 256,%0", val ) +#define  GET_SPRG4_RO()	     GET_REGISTER( "mfspr %0,260" ) +#define	 SET_SPRG4_RO(val)   SET_REGISTER( "mtspr 260,%0", val ) +#define  GET_SPRG5_RO()	     GET_REGISTER( "mfspr %0,261" ) +#define	 SET_SPRG5_RO(val)   SET_REGISTER( "mtspr 261,%0", val ) +#define  GET_SPRG6_RO()	     GET_REGISTER( "mfspr %0,262" ) +#define	 SET_SPRG6_RO(val)   SET_REGISTER( "mtspr 262,%0", val ) +#define  GET_SPRG7_RO()	     GET_REGISTER( "mfspr %0,263" ) +#define	 SET_SPRG7_RO(val)   SET_REGISTER( "mtspr 263,%0", val ) +#define  GET_SPRG0()	     GET_REGISTER( "mfspr %0,272" ) +#define	 SET_SPRG0(val)	     SET_REGISTER( "mtspr 272,%0", val ) +#define  GET_SPRG1()	     GET_REGISTER( "mfspr %0,273" ) +#define	 SET_SPRG1(val)	     SET_REGISTER( "mtspr 273,%0", val ) +#define  GET_SPRG2()	     GET_REGISTER( "mfspr %0,274" ) +#define	 SET_SPRG2(val)	     SET_REGISTER( "mtspr 274,%0", val ) +#define  GET_SPRG3()	     GET_REGISTER( "mfspr %0,275" ) +#define	 SET_SPRG3(val)	     SET_REGISTER( "mtspr 275,%0", val ) +#define  GET_SPRG4()	     GET_REGISTER( "mfspr %0,276" ) +#define	 SET_SPRG4(val)      SET_REGISTER( "mtspr 276,%0", val ) +#define  GET_SPRG5()	     GET_REGISTER( "mfspr %0,277" ) +#define	 SET_SPRG5(val)	     SET_REGISTER( "mtspr 277,%0", val ) +#define  GET_SPRG6()	     GET_REGISTER( "mfspr %0,278" ) +#define	 SET_SPRG6(val)	     SET_REGISTER( "mtspr 278,%0", val ) +#define  GET_SPRG7()	     GET_REGISTER( "mfspr %0,279" ) +#define	 SET_SPRG7(val)	     SET_REGISTER( "mtspr 279,%0", val ) +#define  GET_EAR()	     GET_REGISTER( "mfspr %0,282" ) +#define	 SET_EAR(val)	     SET_REGISTER( "mtspr 282,%0", val ) +#define  GET_TBL()	     GET_REGISTER( "mfspr %0,284" ) +#define	 SET_TBL(val)	     SET_REGISTER( "mtspr 284,%0", val ) +#define  GET_TBU()	     GET_REGISTER( "mfspr %0,285" ) +#define	 SET_TBU(val)	     SET_REGISTER( "mtspr 285,%0", val ) +#define  GET_PVR()	     GET_REGISTER( "mfspr %0,287" ) +#define	 SET_PVR(val)	     SET_REGISTER( "mtspr 287,%0", val ) +#define  GET_IC_CST()	     GET_REGISTER( "mfspr %0,560" ) +#define	 SET_IC_CST(val)     SET_REGISTER( "mtspr 560,%0", val ) +#define  GET_IC_ADR()	     GET_REGISTER( "mfspr %0,561" ) +#define	 SET_IC_ADR(val)     SET_REGISTER( "mtspr 561,%0", val ) +#define  GET_IC_DAT()	     GET_REGISTER( "mfspr %0,562" ) +#define	 SET_IC_DAT(val)     SET_REGISTER( "mtspr 562,%0", val ) +#define  GET_DC_CST()	     GET_REGISTER( "mfspr %0,568" ) +#define	 SET_DC_CST(val)     SET_REGISTER( "mtspr 568,%0", val ) +#define  GET_DC_ADR()	     GET_REGISTER( "mfspr %0,569" ) +#define	 SET_DC_ADR(val)     SET_REGISTER( "mtspr 569,%0", val ) +#define  GET_DC_DAT()	     GET_REGISTER( "mfspr %0,570" ) +#define	 SET_DC_DAT(val)     SET_REGISTER( "mtspr 570,%0", val ) +#define  GET_DPDR()	     GET_REGISTER( "mfspr %0,630" ) +#define	 SET_DPDR(val)	     SET_REGISTER( "mtspr 630,%0", val ) +#define  GET_IMMR()	     GET_REGISTER( "mfspr %0,638" ) +#define	 SET_IMMR(val)	     SET_REGISTER( "mtspr 638,%0", val ) +#define  GET_MI_CTR()	     GET_REGISTER( "mfspr %0,784" ) +#define	 SET_MI_CTR(val)     SET_REGISTER( "mtspr 784,%0", val ) +#define  GET_MI_AP()	     GET_REGISTER( "mfspr %0,786" ) +#define	 SET_MI_AP(val)	     SET_REGISTER( "mtspr 786,%0", val ) +#define  GET_MI_EPN()	     GET_REGISTER( "mfspr %0,787" ) +#define	 SET_MI_EPN(val)     SET_REGISTER( "mtspr 787,%0", val ) +#define  GET_MI_TWC()	     GET_REGISTER( "mfspr %0,789" ) +#define	 SET_MI_TWC(val)     SET_REGISTER( "mtspr 789,%0", val ) +#define  GET_MI_RPN()	     GET_REGISTER( "mfspr %0,790" ) +#define	 SET_MI_RPN(val)     SET_REGISTER( "mtspr 790,%0", val ) +#define  GET_MD_CTR()	     GET_REGISTER( "mfspr %0,792" ) +#define	 SET_MD_CTR(val)     SET_REGISTER( "mtspr 792,%0", val ) +#define  GET_M_CASID()	     GET_REGISTER( "mfspr %0,793" ) +#define	 SET_M_CASID(val)    SET_REGISTER( "mtspr 793,%0", val ) +#define  GET_MD_AP()	     GET_REGISTER( "mfspr %0,794" ) +#define	 SET_MD_AP(val)	     SET_REGISTER( "mtspr ,794%0", val ) +#define  GET_MD_EPN()	     GET_REGISTER( "mfspr %0,795" ) +#define	 SET_MD_EPN(val)     SET_REGISTER( "mtspr 795,%0", val ) +#define  GET_M_TWB()	     GET_REGISTER( "mfspr %0,796" ) +#define	 SET_M_TWB(val)	     SET_REGISTER( "mtspr 796,%0", val ) +#define  GET_MD_TWC()	     GET_REGISTER( "mfspr %0,797" ) +#define	 SET_MD_TWC(val)     SET_REGISTER( "mtspr 797,%0", val ) +#define  GET_MD_RPN()	     GET_REGISTER( "mfspr %0,798" ) +#define	 SET_MD_RPN(val)     SET_REGISTER( "mtspr 798,%0", val ) +#define  GET_M_TW()	     GET_REGISTER( "mfspr %0,799" ) +#define	 SET_M_TW(val)	     SET_REGISTER( "mtspr 799,%0", val ) +#define  GET_MI_DBCAM()      GET_REGISTER( "mfspr %0,816" ) +#define	 SET_MI_DBCAM(val)   SET_REGISTER( "mtspr 816,%0", val ) +#define  GET_MI_DBRAM0()     GET_REGISTER( "mfspr %0,817" ) +#define	 SET_MI_DBRAM0(val)  SET_REGISTER( "mtspr 817,%0", val ) +#define  GET_MI_DBRAM1()     GET_REGISTER( "mfspr %0,818" ) +#define	 SET_MI_DBRAM1(val)  SET_REGISTER( "mtspr 818,%0", val ) +#define  GET_MD_DBCAM()      GET_REGISTER( "mfspr %0,824" ) +#define	 SET_MD_DBCA(val)    SET_REGISTER( "mtspr 824,%0", val ) +#define  GET_MD_DBRAM0()     GET_REGISTER( "mfspr %0,825" ) +#define	 SET_MD_DBRAM0(val)  SET_REGISTER( "mtspr 825,%0", val ) +#define  GET_MD_DBRAM1()     GET_REGISTER( "mfspr %0,826" ) +#define	 SET_MD_DBRAM1(val)  SET_REGISTER( "mtspr 826,%0", val ) +#define  GET_ZPR()           GET_REGISTER( "mfspr %0,944" ) +#define	 SET_ZPR(val)        SET_REGISTER( "mtspr 944,%0", val ) +#define  GET_PID()	     GET_REGISTER( "mfspr %0,945" ) +#define	 SET_PID(val)	     SET_REGISTER( "mtspr 945,%0", val ) +#define  GET_CCR0()	     GET_REGISTER( "mfspr %0,947" ) +#define	 SET_CCR0(val)	     SET_REGISTER( "mtspr 947,%0", val ) +#define	 GET_IAC3()	     GET_REGISTER( "mfspr %0,948" ) +#define	 SET_IAC3(val)	     SET_REGISTER( "mtspr 948,%0", val ) +#define	 GET_IAC4()	     GET_REGISTER( "mfspr %0,949" ) +#define	 SET_IAC4(val)	     SET_REGISTER( "mtspr 949,%0", val ) +#define	 GET_DVC1()	     GET_REGISTER( "mfspr %0,950" ) +#define	 SET_DVC1(val)	     SET_REGISTER( "mtspr 950,%0", val ) +#define	 GET_DVC2()	     GET_REGISTER( "mfspr %0,951" ) +#define	 SET_DVC2(val)	     SET_REGISTER( "mtspr 951,%0", val ) +#define	 GET_SGR()	     GET_REGISTER( "mfspr %0,953" ) +#define	 SET_SGR(val)	     SET_REGISTER( "mtspr 953,%0", val ) +#define	 GET_DCWR()	     GET_REGISTER( "mfspr %0,954" ) +#define	 SET_DCWR(val)	     SET_REGISTER( "mtspr 954,%0", val ) +#define	 GET_SLER()	     GET_REGISTER( "mfspr %0,955" ) +#define	 SET_SLER(val)	     SET_REGISTER( "mtspr 955,%0", val ) +#define	 GET_SU0R()	     GET_REGISTER( "mfspr %0,956" ) +#define	 SET_SU0R(val)	     SET_REGISTER( "mtspr 956,%0", val ) +#define	 GET_DBCR1()	     GET_REGISTER( "mfspr %0,957" ) +#define	 SET_DBCR1(val)	     SET_REGISTER( "mtspr 957,%0", val ) +#define	 GET_ICDBDR()	     GET_REGISTER( "mfspr %0,979" ) +#define	 SET_ICDBDR(val)     SET_REGISTER( "mtspr 979,%0", val ) +#define	 GET_ESR()	     GET_REGISTER( "mfspr %0,980" ) +#define	 SET_ESR(val)	     SET_REGISTER( "mtspr 980,%0", val ) +#define	 GET_DEAR()	     GET_REGISTER( "mfspr %0,981" ) +#define	 SET_DEAR(val)	     SET_REGISTER( "mtspr 981,%0", val ) +#define	 GET_EVPR()	     GET_REGISTER( "mfspr %0,982" ) +#define	 SET_EVPR(val)	     SET_REGISTER( "mtspr 982,%0", val ) +#define	 GET_TSR()	     GET_REGISTER( "mfspr %0,984" ) +#define	 SET_TSR(val)	     SET_REGISTER( "mtspr 984,%0", val ) +#define	 GET_TCR()	     GET_REGISTER( "mfspr %0,986" ) +#define	 SET_TCR(val)	     SET_REGISTER( "mtspr 986,%0", val ) +#define	 GET_PIT()	     GET_REGISTER( "mfspr %0,987" ) +#define	 SET_PIT(val)	     SET_REGISTER( "mtspr 987,%0", val ) +#define	 GET_SRR2()	     GET_REGISTER( "mfspr %0,990" ) +#define	 SET_SRR2(val)	     SET_REGISTER( "mtspr 990,%0", val ) +#define	 GET_SRR3()	     GET_REGISTER( "mfspr %0,991" ) +#define	 SET_SRR3(val)	     SET_REGISTER( "mtspr 991,%0", val ) +#define	 GET_DBSR()	     GET_REGISTER( "mfspr %0,1008" ) +#define	 SET_DBSR(val)	     SET_REGISTER( "mtspr 1008,%0", val ) +#define	 GET_DBCR0()	     GET_REGISTER( "mfspr %0,1010" ) +#define	 SET_DBCR0(val)	     SET_REGISTER( "mtspr 1010,%0", val ) +#define	 GET_IABR()	     GET_REGISTER( "mfspr %0,1010" ) +#define	 SET_IABR(val)	     SET_REGISTER( "mtspr 1010,%0", val ) +#define	 GET_IAC1()	     GET_REGISTER( "mfspr %0,1012" ) +#define	 SET_IAC1(val)	     SET_REGISTER( "mtspr 1012,%0", val ) +#define	 GET_IAC2()	     GET_REGISTER( "mfspr %0,1013" ) +#define	 SET_IAC2(val)	     SET_REGISTER( "mtspr 1013,%0", val ) +#define	 GET_DAC1()	     GET_REGISTER( "mfspr %0,1014" ) +#define	 SET_DAC1(val)	     SET_REGISTER( "mtspr 1014,%0", val ) +#define	 GET_DAC2()	     GET_REGISTER( "mfspr %0,1015" ) +#define	 SET_DAC2(val)	     SET_REGISTER( "mtspr 1015,%0", val ) +#define	 GET_DCCR()	     GET_REGISTER( "mfspr %0,1018" ) +#define	 SET_DCCR(val)	     SET_REGISTER( "mtspr 1018,%0", val ) +#define	 GET_ICCR()	     GET_REGISTER( "mfspr %0,1019" ) +#define	 SET_ICCR(val)	     SET_REGISTER( "mtspr 1019,%0", val ) + +#endif /* _REGS_H */ + + +/* + * Copyright (c) 2000 William L. Pitts and W. Gerald Hicks + * 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. + */ diff --git a/include/galileo/gt64260R.h b/include/galileo/gt64260R.h new file mode 100644 index 000000000..1e6f58bb2 --- /dev/null +++ b/include/galileo/gt64260R.h @@ -0,0 +1,1197 @@ +/* gt64260R.h - GT64260 Internal registers definition file */ + +/* Copyright - Galileo technology. */ + +#ifndef __INCgt64260rh +#define __INCgt64260rh + +#ifndef GT64260 +#define GT64260 +#endif + +/* CPU MASTER CONTROL REGISTER */ +#define	CPU_CONFIGURATION	0x0 +#define	CPU_MASTER_CONTROL	0x160 + +/****************************************/ +/* Processor Address Space				*/ +/****************************************/ + +/* Sdram's BAR'S */ +#define SCS_0_LOW_DECODE_ADDRESS							0x008 +#define SCS_0_HIGH_DECODE_ADDRESS							0x010 +#define SCS_1_LOW_DECODE_ADDRESS							0x208 +#define SCS_1_HIGH_DECODE_ADDRESS							0x210 +#define SCS_2_LOW_DECODE_ADDRESS							0x018 +#define SCS_2_HIGH_DECODE_ADDRESS							0x020 +#define SCS_3_LOW_DECODE_ADDRESS							0x218 +#define SCS_3_HIGH_DECODE_ADDRESS							0x220 +/* Devices BAR'S */ +#define CS_0_LOW_DECODE_ADDRESS							    0x028 +#define CS_0_HIGH_DECODE_ADDRESS							0x030 +#define CS_1_LOW_DECODE_ADDRESS							    0x228 +#define CS_1_HIGH_DECODE_ADDRESS							0x230 +#define CS_2_LOW_DECODE_ADDRESS							    0x248 +#define CS_2_HIGH_DECODE_ADDRESS							0x250 +#define CS_3_LOW_DECODE_ADDRESS							    0x038 +#define CS_3_HIGH_DECODE_ADDRESS							0x040 +#define BOOTCS_LOW_DECODE_ADDRESS							0x238 +#define BOOTCS_HIGH_DECODE_ADDRESS							0x240 + +#define PCI_0I_O_LOW_DECODE_ADDRESS							0x048 +#define PCI_0I_O_HIGH_DECODE_ADDRESS						0x050 +#define PCI_0MEMORY0_LOW_DECODE_ADDRESS						0x058 +#define PCI_0MEMORY0_HIGH_DECODE_ADDRESS					0x060 +#define PCI_0MEMORY1_LOW_DECODE_ADDRESS						0x080 +#define PCI_0MEMORY1_HIGH_DECODE_ADDRESS					0x088 +#define PCI_0MEMORY2_LOW_DECODE_ADDRESS						0x258 +#define PCI_0MEMORY2_HIGH_DECODE_ADDRESS					0x260 +#define PCI_0MEMORY3_LOW_DECODE_ADDRESS						0x280 +#define PCI_0MEMORY3_HIGH_DECODE_ADDRESS					0x288 + +#define PCI_1I_O_LOW_DECODE_ADDRESS							0x090 +#define PCI_1I_O_HIGH_DECODE_ADDRESS						0x098 +#define PCI_1MEMORY0_LOW_DECODE_ADDRESS						0x0a0 +#define PCI_1MEMORY0_HIGH_DECODE_ADDRESS					0x0a8 +#define PCI_1MEMORY1_LOW_DECODE_ADDRESS						0x0b0 +#define PCI_1MEMORY1_HIGH_DECODE_ADDRESS					0x0b8 +#define PCI_1MEMORY2_LOW_DECODE_ADDRESS						0x2a0 +#define PCI_1MEMORY2_HIGH_DECODE_ADDRESS					0x2a8 +#define PCI_1MEMORY3_LOW_DECODE_ADDRESS						0x2b0 +#define PCI_1MEMORY3_HIGH_DECODE_ADDRESS					0x2b8 + + +#define INTERNAL_SPACE_DECODE								0x068 + +#define CPU_0_LOW_DECODE_ADDRESS                            0x290 +#define CPU_0_HIGH_DECODE_ADDRESS                           0x298 +#define CPU_1_LOW_DECODE_ADDRESS                            0x2c0 +#define CPU_1_HIGH_DECODE_ADDRESS                           0x2c8 + +#define PCI_0I_O_ADDRESS_REMAP								0x0f0 +#define PCI_0MEMORY0_ADDRESS_REMAP  			   			0x0f8 +#define PCI_0MEMORY0_HIGH_ADDRESS_REMAP			   			0x320 +#define PCI_0MEMORY1_ADDRESS_REMAP  			   			0x100 +#define PCI_0MEMORY1_HIGH_ADDRESS_REMAP			   			0x328 +#define PCI_0MEMORY2_ADDRESS_REMAP  			   			0x2f8 +#define PCI_0MEMORY2_HIGH_ADDRESS_REMAP			   			0x330 +#define PCI_0MEMORY3_ADDRESS_REMAP  			   			0x300 +#define PCI_0MEMORY3_HIGH_ADDRESS_REMAP			   			0x338 + +#define PCI_1I_O_ADDRESS_REMAP								0x108 +#define PCI_1MEMORY0_ADDRESS_REMAP  				   		0x110 +#define PCI_1MEMORY0_HIGH_ADDRESS_REMAP				   		0x340 +#define PCI_1MEMORY1_ADDRESS_REMAP  					   	0x118 +#define PCI_1MEMORY1_HIGH_ADDRESS_REMAP					   	0x348 +#define PCI_1MEMORY2_ADDRESS_REMAP  					   	0x310 +#define PCI_1MEMORY2_HIGH_ADDRESS_REMAP					   	0x350 +#define PCI_1MEMORY3_ADDRESS_REMAP  					   	0x318 +#define PCI_1MEMORY3_HIGH_ADDRESS_REMAP					   	0x358 + + + + +/****************************************/ +/* CPU Sync Barrier             		*/ +/****************************************/ + +#define PCI_0SYNC_BARIER_VIRTUAL_REGISTER					0x0c0 +#define PCI_1SYNC_BARIER_VIRTUAL_REGISTER					0x0c8 + + +/****************************************/ +/* CPU Access Protect             		*/ +/****************************************/ + +#define CPU_LOW_PROTECT_ADDRESS_0                           0x180 +#define CPU_HIGH_PROTECT_ADDRESS_0                          0x188 +#define CPU_LOW_PROTECT_ADDRESS_1                           0x190 +#define CPU_HIGH_PROTECT_ADDRESS_1                          0x198 +#define CPU_LOW_PROTECT_ADDRESS_2                           0x1a0 +#define CPU_HIGH_PROTECT_ADDRESS_2                          0x1a8 +#define CPU_LOW_PROTECT_ADDRESS_3                           0x1b0 +#define CPU_HIGH_PROTECT_ADDRESS_3                          0x1b8 +#define CPU_LOW_PROTECT_ADDRESS_4                           0x1c0 +#define CPU_HIGH_PROTECT_ADDRESS_4                          0x1c8 +#define CPU_LOW_PROTECT_ADDRESS_5                           0x1d0 +#define CPU_HIGH_PROTECT_ADDRESS_5                          0x1d8 +#define CPU_LOW_PROTECT_ADDRESS_6                           0x1e0 +#define CPU_HIGH_PROTECT_ADDRESS_6                          0x1e8 +#define CPU_LOW_PROTECT_ADDRESS_7                           0x1f0 +#define CPU_HIGH_PROTECT_ADDRESS_7                          0x1f8 + + +/****************************************/ +/*          Snoop Control          		*/ +/****************************************/ + +#define SNOOP_BASE_ADDRESS_0                                0x380 +#define SNOOP_TOP_ADDRESS_0                                 0x388 +#define SNOOP_BASE_ADDRESS_1                                0x390 +#define SNOOP_TOP_ADDRESS_1                                 0x398 +#define SNOOP_BASE_ADDRESS_2                                0x3a0 +#define SNOOP_TOP_ADDRESS_2                                 0x3a8 +#define SNOOP_BASE_ADDRESS_3                                0x3b0 +#define SNOOP_TOP_ADDRESS_3                                 0x3b8 + +/****************************************/ +/*          CPU Error Report       		*/ +/****************************************/ + +#define CPU_ERROR_ADDRESS_LOW 							    0x070 +#define CPU_ERROR_ADDRESS_HIGH 							    0x078 +#define CPU_ERROR_DATA_LOW                                  0x128 +#define CPU_ERROR_DATA_HIGH                                 0x130 +#define CPU_ERROR_PARITY                                    0x138 +#define CPU_ERROR_CAUSE                                     0x140 +#define CPU_ERROR_MASK                                      0x148 + +/****************************************/ +/*          Pslave Debug           		*/ +/****************************************/ + +#define X_0_ADDRESS                                         0x360 +#define X_0_COMMAND_ID                                      0x368 +#define X_1_ADDRESS                                         0x370 +#define X_1_COMMAND_ID                                      0x378 +#define WRITE_DATA_LOW                                      0x3c0 +#define WRITE_DATA_HIGH                                     0x3c8 +#define WRITE_BYTE_ENABLE                                   0x3e0 +#define READ_DATA_LOW                                       0x3d0 +#define READ_DATA_HIGH                                      0x3d8 +#define READ_ID                                             0x3e8 + + +/****************************************/ +/* SDRAM and Device Address Space		*/ +/****************************************/ + + +/****************************************/ +/* SDRAM Configuration			*/ +/****************************************/ + + +#define SDRAM_CONFIGURATION				0x448 +#define SDRAM_OPERATION_MODE				0x474 +#define SDRAM_ADDRESS_DECODE				0x47c +#define SDRAM_UMA_CONTROL				0x4a4 +#define SDRAM_CROSS_BAR_CONTROL_LOW			0x4a8 +#define SDRAM_CROSS_BAR_CONTROL_HIGH			0x4ac +#define SDRAM_CROSS_BAR_TIMEOUT				0x4b0 +#define SDRAM_TIMING					0x4b4 + + +/****************************************/ +/* SDRAM Parameters			*/ +/****************************************/ + +#define SDRAM_BANK0PARAMETERS				0x44C +#define SDRAM_BANK1PARAMETERS				0x450 +#define SDRAM_BANK2PARAMETERS				0x454 +#define SDRAM_BANK3PARAMETERS				0x458 + + +/****************************************/ +/* SDRAM Error Report 			*/ +/****************************************/ + +#define SDRAM_ERROR_DATA_LOW                                0x484 +#define SDRAM_ERROR_DATA_HIGH                               0x480 +#define SDRAM_AND_DEVICE_ERROR_ADDRESS                      0x490 +#define SDRAM_RECEIVED_ECC                                  0x488 +#define SDRAM_CALCULATED_ECC                                0x48c +#define SDRAM_ECC_CONTROL                                   0x494 +#define SDRAM_ECC_ERROR_COUNTER                             0x498 + + +/****************************************/ +/* SDunit Debug (for internal use)	*/ +/****************************************/ + +#define X0_ADDRESS                                          0x500 +#define X0_COMMAND_AND_ID                                   0x504 +#define X0_WRITE_DATA_LOW                                   0x508 +#define X0_WRITE_DATA_HIGH                                  0x50c +#define X0_WRITE_BYTE_ENABLE                                0x518 +#define X0_READ_DATA_LOW                                    0x510 +#define X0_READ_DATA_HIGH                                   0x514 +#define X0_READ_ID                                          0x51c +#define X1_ADDRESS                                          0x520 +#define X1_COMMAND_AND_ID                                   0x524 +#define X1_WRITE_DATA_LOW                                   0x528 +#define X1_WRITE_DATA_HIGH                                  0x52c +#define X1_WRITE_BYTE_ENABLE                                0x538 +#define X1_READ_DATA_LOW                                    0x530 +#define X1_READ_DATA_HIGH                                   0x534 +#define X1_READ_ID                                          0x53c +#define X0_SNOOP_ADDRESS                                    0x540 +#define X0_SNOOP_COMMAND                                    0x544 +#define X1_SNOOP_ADDRESS                                    0x548 +#define X1_SNOOP_COMMAND                                    0x54c + + + +/****************************************/ +/* Device Parameters					*/ +/****************************************/ + +#define DEVICE_BANK0PARAMETERS								0x45c +#define DEVICE_BANK1PARAMETERS								0x460 +#define DEVICE_BANK2PARAMETERS								0x464 +#define DEVICE_BANK3PARAMETERS								0x468 +#define DEVICE_BOOT_BANK_PARAMETERS							0x46c +#define DEVICE_CONTROL                                      0x4c0 +#define DEVICE_CROSS_BAR_CONTROL_LOW                        0x4c8 +#define DEVICE_CROSS_BAR_CONTROL_HIGH                       0x4cc +#define DEVICE_CROSS_BAR_TIMEOUT                            0x4c4 + + +/****************************************/ +/* Device Interrupt 					*/ +/****************************************/ + +#define DEVICE_INTERRUPT_CAUSE                              0x4d0 +#define DEVICE_INTERRUPT_MASK                               0x4d4 +#define DEVICE_ERROR_ADDRESS                                0x4d8 + +/****************************************/ +/* DMA Record							*/ +/****************************************/ + +#define CHANNEL0_DMA_BYTE_COUNT						0x800 +#define CHANNEL1_DMA_BYTE_COUNT	 							0x804 +#define CHANNEL2_DMA_BYTE_COUNT	 							0x808 +#define CHANNEL3_DMA_BYTE_COUNT	 							0x80C +#define CHANNEL4_DMA_BYTE_COUNT								0x900 +#define CHANNEL5_DMA_BYTE_COUNT	 							0x904 +#define CHANNEL6_DMA_BYTE_COUNT	 							0x908 +#define CHANNEL7_DMA_BYTE_COUNT	 							0x90C +#define CHANNEL0_DMA_SOURCE_ADDRESS							0x810 +#define CHANNEL1_DMA_SOURCE_ADDRESS							0x814 +#define CHANNEL2_DMA_SOURCE_ADDRESS							0x818 +#define CHANNEL3_DMA_SOURCE_ADDRESS							0x81C +#define CHANNEL4_DMA_SOURCE_ADDRESS							0x910 +#define CHANNEL5_DMA_SOURCE_ADDRESS							0x914 +#define CHANNEL6_DMA_SOURCE_ADDRESS							0x918 +#define CHANNEL7_DMA_SOURCE_ADDRESS							0x91C +#define CHANNEL0_DMA_DESTINATION_ADDRESS					0x820 +#define CHANNEL1_DMA_DESTINATION_ADDRESS					0x824 +#define CHANNEL2_DMA_DESTINATION_ADDRESS					0x828 +#define CHANNEL3_DMA_DESTINATION_ADDRESS					0x82C +#define CHANNEL4_DMA_DESTINATION_ADDRESS					0x920 +#define CHANNEL5_DMA_DESTINATION_ADDRESS					0x924 +#define CHANNEL6_DMA_DESTINATION_ADDRESS					0x928 +#define CHANNEL7_DMA_DESTINATION_ADDRESS					0x92C +#define CHANNEL0NEXT_RECORD_POINTER							0x830 +#define CHANNEL1NEXT_RECORD_POINTER							0x834 +#define CHANNEL2NEXT_RECORD_POINTER							0x838 +#define CHANNEL3NEXT_RECORD_POINTER							0x83C +#define CHANNEL4NEXT_RECORD_POINTER							0x930 +#define CHANNEL5NEXT_RECORD_POINTER							0x934 +#define CHANNEL6NEXT_RECORD_POINTER							0x938 +#define CHANNEL7NEXT_RECORD_POINTER							0x93C +#define CHANNEL0CURRENT_DESCRIPTOR_POINTER					0x870 +#define CHANNEL1CURRENT_DESCRIPTOR_POINTER					0x874 +#define CHANNEL2CURRENT_DESCRIPTOR_POINTER					0x878 +#define CHANNEL3CURRENT_DESCRIPTOR_POINTER					0x87C +#define CHANNEL4CURRENT_DESCRIPTOR_POINTER					0x970 +#define CHANNEL5CURRENT_DESCRIPTOR_POINTER					0x974 +#define CHANNEL6CURRENT_DESCRIPTOR_POINTER					0x978 +#define CHANNEL7CURRENT_DESCRIPTOR_POINTER					0x97C +#define CHANNEL0_DMA_SOURCE_HIGH_PCI_ADDRESS                0x890 +#define CHANNEL1_DMA_SOURCE_HIGH_PCI_ADDRESS                0x894 +#define CHANNEL2_DMA_SOURCE_HIGH_PCI_ADDRESS                0x898 +#define CHANNEL3_DMA_SOURCE_HIGH_PCI_ADDRESS                0x89c +#define CHANNEL4_DMA_SOURCE_HIGH_PCI_ADDRESS                0x990 +#define CHANNEL5_DMA_SOURCE_HIGH_PCI_ADDRESS                0x994 +#define CHANNEL6_DMA_SOURCE_HIGH_PCI_ADDRESS                0x998 +#define CHANNEL7_DMA_SOURCE_HIGH_PCI_ADDRESS                0x99c +#define CHANNEL0_DMA_DESTINATION_HIGH_PCI_ADDRESS           0x8a0 +#define CHANNEL1_DMA_DESTINATION_HIGH_PCI_ADDRESS           0x8a4 +#define CHANNEL2_DMA_DESTINATION_HIGH_PCI_ADDRESS           0x8a8 +#define CHANNEL3_DMA_DESTINATION_HIGH_PCI_ADDRESS           0x8ac +#define CHANNEL4_DMA_DESTINATION_HIGH_PCI_ADDRESS           0x9a0 +#define CHANNEL5_DMA_DESTINATION_HIGH_PCI_ADDRESS           0x9a4 +#define CHANNEL6_DMA_DESTINATION_HIGH_PCI_ADDRESS           0x9a8 +#define CHANNEL7_DMA_DESTINATION_HIGH_PCI_ADDRESS           0x9ac +#define CHANNEL0_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS   0x8b0 +#define CHANNEL1_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS   0x8b4 +#define CHANNEL2_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS   0x8b8 +#define CHANNEL3_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS   0x8bc +#define CHANNEL4_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS   0x9b0 +#define CHANNEL5_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS   0x9b4 +#define CHANNEL6_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS   0x9b8 +#define CHANNEL7_DMA_NEXT_RECORD_POINTER_HIGH_PCI_ADDRESS   0x9bc + +/****************************************/ +/* DMA Channel Control					*/ +/****************************************/ + +#define CHANNEL0CONTROL 									0x840 +#define CHANNEL0CONTROL_HIGH								0x880 +#define CHANNEL1CONTROL 									0x844 +#define CHANNEL1CONTROL_HIGH								0x884 +#define CHANNEL2CONTROL 									0x848 +#define CHANNEL2CONTROL_HIGH								0x888 +#define CHANNEL3CONTROL 									0x84C +#define CHANNEL3CONTROL_HIGH								0x88C + +#define CHANNEL4CONTROL 									0x940 +#define CHANNEL4CONTROL_HIGH								0x980 +#define CHANNEL5CONTROL 									0x944 +#define CHANNEL5CONTROL_HIGH								0x984 +#define CHANNEL6CONTROL 									0x948 +#define CHANNEL6CONTROL_HIGH								0x988 +#define CHANNEL7CONTROL 									0x94C +#define CHANNEL7CONTROL_HIGH								0x98C + + +/****************************************/ +/* DMA Arbiter							*/ +/****************************************/ + +#define ARBITER_CONTROL_0_3									0x860 +#define ARBITER_CONTROL_4_7									0x960 + + +/****************************************/ +/* DMA Interrupt						*/ +/****************************************/ + +#define CHANELS0_3_INTERRUPT_CAUSE                          0x8c0 +#define CHANELS0_3_INTERRUPT_MASK                           0x8c4 +#define CHANELS0_3_ERROR_ADDRESS                            0x8c8 +#define CHANELS0_3_ERROR_SELECT                             0x8cc +#define CHANELS4_7_INTERRUPT_CAUSE                          0x9c0 +#define CHANELS4_7_INTERRUPT_MASK                           0x9c4 +#define CHANELS4_7_ERROR_ADDRESS                            0x9c8 +#define CHANELS4_7_ERROR_SELECT                             0x9cc + + +/****************************************/ +/* DMA Debug (for internal use)         */ +/****************************************/ + +#define DMA_X0_ADDRESS                                      0x8e0 +#define DMA_X0_COMMAND_AND_ID                               0x8e4 +#define DMA_X0_WRITE_DATA_LOW                               0x8e8 +#define DMA_X0_WRITE_DATA_HIGH                              0x8ec +#define DMA_X0_WRITE_BYTE_ENABLE                            0x8f8 +#define DMA_X0_READ_DATA_LOW                                0x8f0 +#define DMA_X0_READ_DATA_HIGH                               0x8f4 +#define DMA_X0_READ_ID                                      0x8fc +#define DMA_X1_ADDRESS                                      0x9e0 +#define DMA_X1_COMMAND_AND_ID                               0x9e4 +#define DMA_X1_WRITE_DATA_LOW                               0x9e8 +#define DMA_X1_WRITE_DATA_HIGH                              0x9ec +#define DMA_X1_WRITE_BYTE_ENABLE                            0x9f8 +#define DMA_X1_READ_DATA_LOW                                0x9f0 +#define DMA_X1_READ_DATA_HIGH                               0x9f4 +#define DMA_X1_READ_ID                                      0x9fc + +/****************************************/ +/* Timer_Counter 						*/ +/****************************************/ + +#define TIMER_COUNTER0										0x850 +#define TIMER_COUNTER1										0x854 +#define TIMER_COUNTER2										0x858 +#define TIMER_COUNTER3										0x85C +#define TIMER_COUNTER_0_3_CONTROL							0x864 +#define TIMER_COUNTER_0_3_INTERRUPT_CAUSE					0x868 +#define TIMER_COUNTER_0_3_INTERRUPT_MASK      				0x86c +#define TIMER_COUNTER4										0x950 +#define TIMER_COUNTER5										0x954 +#define TIMER_COUNTER6										0x958 +#define TIMER_COUNTER7										0x95C +#define TIMER_COUNTER_4_7_CONTROL							0x964 +#define TIMER_COUNTER_4_7_INTERRUPT_CAUSE					0x968 +#define TIMER_COUNTER_4_7_INTERRUPT_MASK      				0x96c + +/****************************************/ +/* PCI Slave Address Decoding           */ +/****************************************/ + +#define PCI_0SCS_0_BANK_SIZE								0xc08 +#define PCI_1SCS_0_BANK_SIZE								0xc88 +#define PCI_0SCS_1_BANK_SIZE								0xd08 +#define PCI_1SCS_1_BANK_SIZE								0xd88 +#define PCI_0SCS_2_BANK_SIZE								0xc0c +#define PCI_1SCS_2_BANK_SIZE								0xc8c +#define PCI_0SCS_3_BANK_SIZE								0xd0c +#define PCI_1SCS_3_BANK_SIZE								0xd8c +#define PCI_0CS_0_BANK_SIZE							    	0xc10 +#define PCI_1CS_0_BANK_SIZE							    	0xc90 +#define PCI_0CS_1_BANK_SIZE							    	0xd10 +#define PCI_1CS_1_BANK_SIZE							    	0xd90 +#define PCI_0CS_2_BANK_SIZE							    	0xd18 +#define PCI_1CS_2_BANK_SIZE							    	0xd98 +#define PCI_0CS_3_BANK_SIZE					        		0xc14 +#define PCI_1CS_3_BANK_SIZE					        		0xc94 +#define PCI_0CS_BOOT_BANK_SIZE							    0xd14 +#define PCI_1CS_BOOT_BANK_SIZE							    0xd94 +#define PCI_0P2P_MEM0_BAR_SIZE                              0xd1c +#define PCI_1P2P_MEM0_BAR_SIZE                              0xd9c +#define PCI_0P2P_MEM1_BAR_SIZE                              0xd20 +#define PCI_1P2P_MEM1_BAR_SIZE                              0xda0 +#define PCI_0P2P_I_O_BAR_SIZE                               0xd24 +#define PCI_1P2P_I_O_BAR_SIZE                               0xda4 +#define PCI_0CPU_BAR_SIZE                                   0xd28 +#define PCI_1CPU_BAR_SIZE                                   0xda8 +#define PCI_0DAC_SCS_0_BANK_SIZE                            0xe00 +#define PCI_1DAC_SCS_0_BANK_SIZE                            0xe80 +#define PCI_0DAC_SCS_1_BANK_SIZE                            0xe04 +#define PCI_1DAC_SCS_1_BANK_SIZE                            0xe84 +#define PCI_0DAC_SCS_2_BANK_SIZE                            0xe08 +#define PCI_1DAC_SCS_2_BANK_SIZE                            0xe88 +#define PCI_0DAC_SCS_3_BANK_SIZE                            0xe0c +#define PCI_1DAC_SCS_3_BANK_SIZE                            0xe8c +#define PCI_0DAC_CS_0_BANK_SIZE                             0xe10 +#define PCI_1DAC_CS_0_BANK_SIZE                             0xe90 +#define PCI_0DAC_CS_1_BANK_SIZE                             0xe14 +#define PCI_1DAC_CS_1_BANK_SIZE                             0xe94 +#define PCI_0DAC_CS_2_BANK_SIZE                             0xe18 +#define PCI_1DAC_CS_2_BANK_SIZE                             0xe98 +#define PCI_0DAC_CS_3_BANK_SIZE                             0xe1c +#define PCI_1DAC_CS_3_BANK_SIZE                             0xe9c +#define PCI_0DAC_BOOTCS_BANK_SIZE                           0xe20 +#define PCI_1DAC_BOOTCS_BANK_SIZE                           0xea0 +#define PCI_0DAC_P2P_MEM0_BAR_SIZE                          0xe24 +#define PCI_1DAC_P2P_MEM0_BAR_SIZE                          0xea4 +#define PCI_0DAC_P2P_MEM1_BAR_SIZE                          0xe28 +#define PCI_1DAC_P2P_MEM1_BAR_SIZE                          0xea8 +#define PCI_0DAC_CPU_BAR_SIZE                               0xe2c +#define PCI_1DAC_CPU_BAR_SIZE                               0xeac +#define PCI_0EXPANSION_ROM_BAR_SIZE                         0xd2c +#define PCI_1EXPANSION_ROM_BAR_SIZE                         0xdac +#define PCI_0BASE_ADDRESS_REGISTERS_ENABLE 					0xc3c +#define PCI_1BASE_ADDRESS_REGISTERS_ENABLE 					0xcbc +#define PCI_0SCS_0_BASE_ADDRESS_REMAP						0xc48 +#define PCI_1SCS_0_BASE_ADDRESS_REMAP						0xcc8 +#define PCI_0SCS_1_BASE_ADDRESS_REMAP						0xd48 +#define PCI_1SCS_1_BASE_ADDRESS_REMAP						0xdc8 +#define PCI_0SCS_2_BASE_ADDRESS_REMAP						0xc4c +#define PCI_1SCS_2_BASE_ADDRESS_REMAP						0xccc +#define PCI_0SCS_3_BASE_ADDRESS_REMAP						0xd4c +#define PCI_1SCS_3_BASE_ADDRESS_REMAP						0xdcc +#define PCI_0CS_0_BASE_ADDRESS_REMAP						0xc50 +#define PCI_1CS_0_BASE_ADDRESS_REMAP						0xcd0 +#define PCI_0CS_1_BASE_ADDRESS_REMAP						0xd50 +#define PCI_1CS_1_BASE_ADDRESS_REMAP						0xdd0 +#define PCI_0CS_2_BASE_ADDRESS_REMAP						0xd58 +#define PCI_1CS_2_BASE_ADDRESS_REMAP						0xdd8 +#define PCI_0CS_3_BASE_ADDRESS_REMAP           				0xc54 +#define PCI_1CS_3_BASE_ADDRESS_REMAP           				0xcd4 +#define PCI_0CS_BOOTCS_BASE_ADDRESS_REMAP      				0xd54 +#define PCI_1CS_BOOTCS_BASE_ADDRESS_REMAP      				0xdd4 +#define PCI_0P2P_MEM0_BASE_ADDRESS_REMAP_LOW                0xd5c +#define PCI_1P2P_MEM0_BASE_ADDRESS_REMAP_LOW                0xddc +#define PCI_0P2P_MEM0_BASE_ADDRESS_REMAP_HIGH               0xd60 +#define PCI_1P2P_MEM0_BASE_ADDRESS_REMAP_HIGH               0xde0 +#define PCI_0P2P_MEM1_BASE_ADDRESS_REMAP_LOW                0xd64 +#define PCI_1P2P_MEM1_BASE_ADDRESS_REMAP_LOW                0xde4 +#define PCI_0P2P_MEM1_BASE_ADDRESS_REMAP_HIGH               0xd68 +#define PCI_1P2P_MEM1_BASE_ADDRESS_REMAP_HIGH               0xde8 +#define PCI_0P2P_I_O_BASE_ADDRESS_REMAP                     0xd6c +#define PCI_1P2P_I_O_BASE_ADDRESS_REMAP                     0xdec +#define PCI_0CPU_BASE_ADDRESS_REMAP                         0xd70 +#define PCI_1CPU_BASE_ADDRESS_REMAP                         0xdf0 +#define PCI_0DAC_SCS_0_BASE_ADDRESS_REMAP                   0xf00 +#define PCI_1DAC_SCS_0_BASE_ADDRESS_REMAP                   0xff0 +#define PCI_0DAC_SCS_1_BASE_ADDRESS_REMAP                   0xf04 +#define PCI_1DAC_SCS_1_BASE_ADDRESS_REMAP                   0xf84 +#define PCI_0DAC_SCS_2_BASE_ADDRESS_REMAP                   0xf08 +#define PCI_1DAC_SCS_2_BASE_ADDRESS_REMAP                   0xf88 +#define PCI_0DAC_SCS_3_BASE_ADDRESS_REMAP                   0xf0c +#define PCI_1DAC_SCS_3_BASE_ADDRESS_REMAP                   0xf8c +#define PCI_0DAC_CS_0_BASE_ADDRESS_REMAP                    0xf10 +#define PCI_1DAC_CS_0_BASE_ADDRESS_REMAP                    0xf90 +#define PCI_0DAC_CS_1_BASE_ADDRESS_REMAP                    0xf14 +#define PCI_1DAC_CS_1_BASE_ADDRESS_REMAP                    0xf94 +#define PCI_0DAC_CS_2_BASE_ADDRESS_REMAP                    0xf18 +#define PCI_1DAC_CS_2_BASE_ADDRESS_REMAP                    0xf98 +#define PCI_0DAC_CS_3_BASE_ADDRESS_REMAP                    0xf1c +#define PCI_1DAC_CS_3_BASE_ADDRESS_REMAP                    0xf9c +#define PCI_0DAC_BOOTCS_BASE_ADDRESS_REMAP                  0xf20 +#define PCI_1DAC_BOOTCS_BASE_ADDRESS_REMAP                  0xfa0 +#define PCI_0DAC_P2P_MEM0_BASE_ADDRESS_REMAP_LOW            0xf24 +#define PCI_1DAC_P2P_MEM0_BASE_ADDRESS_REMAP_LOW            0xfa4 +#define PCI_0DAC_P2P_MEM0_BASE_ADDRESS_REMAP_HIGH           0xf28 +#define PCI_1DAC_P2P_MEM0_BASE_ADDRESS_REMAP_HIGH           0xfa8 +#define PCI_0DAC_P2P_MEM1_BASE_ADDRESS_REMAP_LOW            0xf2c +#define PCI_1DAC_P2P_MEM1_BASE_ADDRESS_REMAP_LOW            0xfac +#define PCI_0DAC_P2P_MEM1_BASE_ADDRESS_REMAP_HIGH           0xf30 +#define PCI_1DAC_P2P_MEM1_BASE_ADDRESS_REMAP_HIGH           0xfb0 +#define PCI_0DAC_CPU_BASE_ADDRESS_REMAP                     0xf34 +#define PCI_1DAC_CPU_BASE_ADDRESS_REMAP                     0xfb4 +#define PCI_0EXPANSION_ROM_BASE_ADDRESS_REMAP               0xf38 +#define PCI_1EXPANSION_ROM_BASE_ADDRESS_REMAP               0xfb8 +#define PCI_0ADDRESS_DECODE_CONTROL                         0xd3c +#define PCI_1ADDRESS_DECODE_CONTROL                         0xdbc + +/****************************************/ +/* PCI Control                          */ +/****************************************/ + +#define PCI_0COMMAND										0xc00 +#define PCI_1COMMAND										0xc80 +#define PCI_0MODE                                           0xd00 +#define PCI_1MODE                                           0xd80 +#define PCI_0TIMEOUT_RETRY									0xc04 +#define PCI_1TIMEOUT_RETRY									0xc84 +#define PCI_0READ_BUFFER_DISCARD_TIMER                      0xd04 +#define PCI_1READ_BUFFER_DISCARD_TIMER                      0xd84 +#define MSI_0TRIGGER_TIMER                                  0xc38 +#define MSI_1TRIGGER_TIMER                                  0xcb8 +#define PCI_0ARBITER_CONTROL                                0x1d00 +#define PCI_1ARBITER_CONTROL                                0x1d80 +/* changing untill here */ +#define PCI_0CROSS_BAR_CONTROL_LOW                           0x1d08 +#define PCI_0CROSS_BAR_CONTROL_HIGH                          0x1d0c +#define PCI_0CROSS_BAR_TIMEOUT                               0x1d04 +#define PCI_0READ_RESPONSE_CROSS_BAR_CONTROL_LOW             0x1d18 +#define PCI_0READ_RESPONSE_CROSS_BAR_CONTROL_HIGH            0x1d1c +#define PCI_0SYNC_BARRIER_VIRTUAL_REGISTER                   0x1d10 +#define PCI_0P2P_CONFIGURATION                               0x1d14 +#define PCI_0ACCESS_CONTROL_BASE_0_LOW                       0x1e00 +#define PCI_0ACCESS_CONTROL_BASE_0_HIGH                      0x1e04 +#define PCI_0ACCESS_CONTROL_TOP_0                            0x1e08 +#define PCI_0ACCESS_CONTROL_BASE_1_LOW                       0x1e10 +#define PCI_0ACCESS_CONTROL_BASE_1_HIGH                      0x1e14 +#define PCI_0ACCESS_CONTROL_TOP_1                            0x1e18 +#define PCI_0ACCESS_CONTROL_BASE_2_LOW                       0x1e20 +#define PCI_0ACCESS_CONTROL_BASE_2_HIGH                      0x1e24 +#define PCI_0ACCESS_CONTROL_TOP_2                            0x1e28 +#define PCI_0ACCESS_CONTROL_BASE_3_LOW                       0x1e30 +#define PCI_0ACCESS_CONTROL_BASE_3_HIGH                      0x1e34 +#define PCI_0ACCESS_CONTROL_TOP_3                            0x1e38 +#define PCI_0ACCESS_CONTROL_BASE_4_LOW                       0x1e40 +#define PCI_0ACCESS_CONTROL_BASE_4_HIGH                      0x1e44 +#define PCI_0ACCESS_CONTROL_TOP_4                            0x1e48 +#define PCI_0ACCESS_CONTROL_BASE_5_LOW                       0x1e50 +#define PCI_0ACCESS_CONTROL_BASE_5_HIGH                      0x1e54 +#define PCI_0ACCESS_CONTROL_TOP_5                            0x1e58 +#define PCI_0ACCESS_CONTROL_BASE_6_LOW                       0x1e60 +#define PCI_0ACCESS_CONTROL_BASE_6_HIGH                      0x1e64 +#define PCI_0ACCESS_CONTROL_TOP_6                            0x1e68 +#define PCI_0ACCESS_CONTROL_BASE_7_LOW                       0x1e70 +#define PCI_0ACCESS_CONTROL_BASE_7_HIGH                      0x1e74 +#define PCI_0ACCESS_CONTROL_TOP_7                            0x1e78 +#define PCI_1CROSS_BAR_CONTROL_LOW                           0x1d88 +#define PCI_1CROSS_BAR_CONTROL_HIGH                          0x1d8c +#define PCI_1CROSS_BAR_TIMEOUT                               0x1d84 +#define PCI_1READ_RESPONSE_CROSS_BAR_CONTROL_LOW             0x1d98 +#define PCI_1READ_RESPONSE_CROSS_BAR_CONTROL_HIGH            0x1d9c +#define PCI_1SYNC_BARRIER_VIRTUAL_REGISTER                   0x1d90 +#define PCI_1P2P_CONFIGURATION                               0x1d94 +#define PCI_1ACCESS_CONTROL_BASE_0_LOW                       0x1e80 +#define PCI_1ACCESS_CONTROL_BASE_0_HIGH                      0x1e84 +#define PCI_1ACCESS_CONTROL_TOP_0                            0x1e88 +#define PCI_1ACCESS_CONTROL_BASE_1_LOW                       0x1e90 +#define PCI_1ACCESS_CONTROL_BASE_1_HIGH                      0x1e94 +#define PCI_1ACCESS_CONTROL_TOP_1                            0x1e98 +#define PCI_1ACCESS_CONTROL_BASE_2_LOW                       0x1ea0 +#define PCI_1ACCESS_CONTROL_BASE_2_HIGH                      0x1ea4 +#define PCI_1ACCESS_CONTROL_TOP_2                            0x1ea8 +#define PCI_1ACCESS_CONTROL_BASE_3_LOW                       0x1eb0 +#define PCI_1ACCESS_CONTROL_BASE_3_HIGH                      0x1eb4 +#define PCI_1ACCESS_CONTROL_TOP_3                            0x1eb8 +#define PCI_1ACCESS_CONTROL_BASE_4_LOW                       0x1ec0 +#define PCI_1ACCESS_CONTROL_BASE_4_HIGH                      0x1ec4 +#define PCI_1ACCESS_CONTROL_TOP_4                            0x1ec8 +#define PCI_1ACCESS_CONTROL_BASE_5_LOW                       0x1ed0 +#define PCI_1ACCESS_CONTROL_BASE_5_HIGH                      0x1ed4 +#define PCI_1ACCESS_CONTROL_TOP_5                            0x1ed8 +#define PCI_1ACCESS_CONTROL_BASE_6_LOW                       0x1ee0 +#define PCI_1ACCESS_CONTROL_BASE_6_HIGH                      0x1ee4 +#define PCI_1ACCESS_CONTROL_TOP_6                            0x1ee8 +#define PCI_1ACCESS_CONTROL_BASE_7_LOW                       0x1ef0 +#define PCI_1ACCESS_CONTROL_BASE_7_HIGH                      0x1ef4 +#define PCI_1ACCESS_CONTROL_TOP_7                            0x1ef8 + +/****************************************/ +/* PCI Snoop Control                    */ +/****************************************/ + +#define PCI_0SNOOP_CONTROL_BASE_0_LOW                        0x1f00 +#define PCI_0SNOOP_CONTROL_BASE_0_HIGH                       0x1f04 +#define PCI_0SNOOP_CONTROL_TOP_0                             0x1f08 +#define PCI_0SNOOP_CONTROL_BASE_1_0_LOW                      0x1f10 +#define PCI_0SNOOP_CONTROL_BASE_1_0_HIGH                     0x1f14 +#define PCI_0SNOOP_CONTROL_TOP_1                             0x1f18 +#define PCI_0SNOOP_CONTROL_BASE_2_0_LOW                      0x1f20 +#define PCI_0SNOOP_CONTROL_BASE_2_0_HIGH                     0x1f24 +#define PCI_0SNOOP_CONTROL_TOP_2                             0x1f28 +#define PCI_0SNOOP_CONTROL_BASE_3_0_LOW                      0x1f30 +#define PCI_0SNOOP_CONTROL_BASE_3_0_HIGH                     0x1f34 +#define PCI_0SNOOP_CONTROL_TOP_3                             0x1f38 +#define PCI_1SNOOP_CONTROL_BASE_0_LOW                        0x1f80 +#define PCI_1SNOOP_CONTROL_BASE_0_HIGH                       0x1f84 +#define PCI_1SNOOP_CONTROL_TOP_0                             0x1f88 +#define PCI_1SNOOP_CONTROL_BASE_1_0_LOW                      0x1f90 +#define PCI_1SNOOP_CONTROL_BASE_1_0_HIGH                     0x1f94 +#define PCI_1SNOOP_CONTROL_TOP_1                             0x1f98 +#define PCI_1SNOOP_CONTROL_BASE_2_0_LOW                      0x1fa0 +#define PCI_1SNOOP_CONTROL_BASE_2_0_HIGH                     0x1fa4 +#define PCI_1SNOOP_CONTROL_TOP_2                             0x1fa8 +#define PCI_1SNOOP_CONTROL_BASE_3_0_LOW                      0x1fb0 +#define PCI_1SNOOP_CONTROL_BASE_3_0_HIGH                     0x1fb4 +#define PCI_1SNOOP_CONTROL_TOP_3                             0x1fb8 + +/****************************************/ +/* PCI Configuration Address            */ +/****************************************/ + +#define PCI_0CONFIGURATION_ADDRESS 							0xcf8 +#define PCI_0CONFIGURATION_DATA_VIRTUAL_REGISTER           	0xcfc +#define PCI_1CONFIGURATION_ADDRESS 							0xc78 +#define PCI_1CONFIGURATION_DATA_VIRTUAL_REGISTER           	0xc7c +#define PCI_0INTERRUPT_ACKNOWLEDGE_VIRTUAL_REGISTER			0xc34 +#define PCI_1INTERRUPT_ACKNOWLEDGE_VIRTUAL_REGISTER			0xcb4 + +/****************************************/ +/* PCI Error Report                     */ +/****************************************/ + +#define PCI_0SERR_MASK										 0xc28 +#define PCI_0ERROR_ADDRESS_LOW                               0x1d40 +#define PCI_0ERROR_ADDRESS_HIGH                              0x1d44 +#define PCI_0ERROR_DATA_LOW                                  0x1d48 +#define PCI_0ERROR_DATA_HIGH                                 0x1d4c +#define PCI_0ERROR_COMMAND                                   0x1d50 +#define PCI_0ERROR_CAUSE                                     0x1d58 +#define PCI_0ERROR_MASK                                      0x1d5c +#define PCI_1SERR_MASK										 0xca8 +#define PCI_1ERROR_ADDRESS_LOW                               0x1dc0 +#define PCI_1ERROR_ADDRESS_HIGH                              0x1dc4 +#define PCI_1ERROR_DATA_LOW                                  0x1dc8 +#define PCI_1ERROR_DATA_HIGH                                 0x1dcc +#define PCI_1ERROR_COMMAND                                   0x1dd0 +#define PCI_1ERROR_CAUSE                                     0x1dd8 +#define PCI_1ERROR_MASK                                      0x1ddc + + +/****************************************/ +/* Lslave Debug  (for internal use)     */ +/****************************************/ + +#define L_SLAVE_X0_ADDRESS                                  0x1d20 +#define L_SLAVE_X0_COMMAND_AND_ID                           0x1d24 +#define L_SLAVE_X1_ADDRESS                                  0x1d28 +#define L_SLAVE_X1_COMMAND_AND_ID                           0x1d2c +#define L_SLAVE_WRITE_DATA_LOW                              0x1d30 +#define L_SLAVE_WRITE_DATA_HIGH                             0x1d34 +#define L_SLAVE_WRITE_BYTE_ENABLE                           0x1d60 +#define L_SLAVE_READ_DATA_LOW                               0x1d38 +#define L_SLAVE_READ_DATA_HIGH                              0x1d3c +#define L_SLAVE_READ_ID                                     0x1d64 + +/****************************************/ +/* PCI Configuration Function 0         */ +/****************************************/ + +#define PCI_DEVICE_AND_VENDOR_ID 							0x000 +#define PCI_STATUS_AND_COMMAND								0x004 +#define PCI_CLASS_CODE_AND_REVISION_ID				        0x008 +#define PCI_BIST_HEADER_TYPE_LATENCY_TIMER_CACHE_LINE 		0x00C +#define PCI_SCS_0_BASE_ADDRESS	    						0x010 +#define PCI_SCS_1_BASE_ADDRESS 							    0x014 +#define PCI_SCS_2_BASE_ADDRESS 							    0x018 +#define PCI_SCS_3_BASE_ADDRESS      						0x01C +#define PCI_INTERNAL_REGISTERS_MEMORY_MAPPED_BASE_ADDRESS	0x020 +#define PCI_INTERNAL_REGISTERS_I_OMAPPED_BASE_ADDRESS		0x024 +#define PCI_SUBSYSTEM_ID_AND_SUBSYSTEM_VENDOR_ID			0x02C +#define PCI_EXPANSION_ROM_BASE_ADDRESS_REGISTER				0x030 +#define PCI_CAPABILTY_LIST_POINTER                          0x034 +#define PCI_INTERRUPT_PIN_AND_LINE 						    0x03C +#define PCI_POWER_MANAGEMENT_CAPABILITY                     0x040 +#define PCI_POWER_MANAGEMENT_STATUS_AND_CONTROL             0x044 +#define PCI_VPD_ADDRESS                                     0x048 +#define PCI_VPD_DATA                                        0x04c +#define PCI_MSI_MESSAGE_CONTROL                             0x050 +#define PCI_MSI_MESSAGE_ADDRESS                             0x054 +#define PCI_MSI_MESSAGE_UPPER_ADDRESS                       0x058 +#define PCI_MSI_MESSAGE_DATA                                0x05c +#define PCI_COMPACT_PCI_HOT_SWAP_CAPABILITY                 0x058 + +/****************************************/ +/* PCI Configuration Function 1         */ +/****************************************/ + +#define PCI_CS_0_BASE_ADDRESS	    						0x110 +#define PCI_CS_1_BASE_ADDRESS 							    0x114 +#define PCI_CS_2_BASE_ADDRESS 							    0x118 +#define PCI_CS_3_BASE_ADDRESS     					        0x11c +#define PCI_BOOTCS_BASE_ADDRESS                     	    0x120 + +/****************************************/ +/* PCI Configuration Function 2         */ +/****************************************/ + +#define PCI_P2P_MEM0_BASE_ADDRESS	    					0x210 +#define PCI_P2P_MEM1_BASE_ADDRESS 							0x214 +#define PCI_P2P_I_O_BASE_ADDRESS 							0x218 +#define PCI_CPU_BASE_ADDRESS      						    0x21c + +/****************************************/ +/* PCI Configuration Function 4         */ +/****************************************/ + +#define PCI_DAC_SCS_0_BASE_ADDRESS_LOW 						0x410 +#define PCI_DAC_SCS_0_BASE_ADDRESS_HIGH					    0x414 +#define PCI_DAC_SCS_1_BASE_ADDRESS_LOW   				    0x418 +#define PCI_DAC_SCS_1_BASE_ADDRESS_HIGH  				    0x41c +#define PCI_DAC_P2P_MEM0_BASE_ADDRESS_LOW              	    0x420 +#define PCI_DAC_P2P_MEM0_BASE_ADDRESS_HIGH             	    0x424 + + +/****************************************/ +/* PCI Configuration Function 5         */ +/****************************************/ + +#define PCI_DAC_SCS_2_BASE_ADDRESS_LOW 						0x510 +#define PCI_DAC_SCS_2_BASE_ADDRESS_HIGH					    0x514 +#define PCI_DAC_SCS_3_BASE_ADDRESS_LOW   				    0x518 +#define PCI_DAC_SCS_3_BASE_ADDRESS_HIGH  				    0x51c +#define PCI_DAC_P2P_MEM1_BASE_ADDRESS_LOW              	    0x520 +#define PCI_DAC_P2P_MEM1_BASE_ADDRESS_HIGH             	    0x524 + + +/****************************************/ +/* PCI Configuration Function 6         */ +/****************************************/ + +#define PCI_DAC_CS_0_BASE_ADDRESS_LOW 						0x610 +#define PCI_DAC_CS_0_BASE_ADDRESS_HIGH					    0x614 +#define PCI_DAC_CS_1_BASE_ADDRESS_LOW   				    0x618 +#define PCI_DAC_CS_1_BASE_ADDRESS_HIGH  				    0x61c +#define PCI_DAC_CS_2_BASE_ADDRESS_LOW            	        0x620 +#define PCI_DAC_CS_2_BASE_ADDRESS_HIGH           	        0x624 + +/****************************************/ +/* PCI Configuration Function 7         */ +/****************************************/ + +#define PCI_DAC_CS_3_BASE_ADDRESS_LOW 						0x710 +#define PCI_DAC_CS_3_BASE_ADDRESS_HIGH					    0x714 +#define PCI_DAC_BOOTCS_BASE_ADDRESS_LOW   				    0x718 +#define PCI_DAC_BOOTCS_BASE_ADDRESS_HIGH  				    0x71c +#define PCI_DAC_CPU_BASE_ADDRESS_LOW            	        0x720 +#define PCI_DAC_CPU_BASE_ADDRESS_HIGH           	        0x724 + +/****************************************/ +/* Interrupts 				*/ +/****************************************/ + +#define LOW_INTERRUPT_CAUSE_REGISTER   						0xc18 +#define HIGH_INTERRUPT_CAUSE_REGISTER						0xc68 +#define CPU_INTERRUPT_MASK_REGISTER_LOW						0xc1c +#define CPU_INTERRUPT_MASK_REGISTER_HIGH					0xc6c +#define CPU_SELECT_CAUSE_REGISTER							0xc70 +#define PCI_0INTERRUPT_CAUSE_MASK_REGISTER_LOW				0xc24 +#define PCI_0INTERRUPT_CAUSE_MASK_REGISTER_HIGH				0xc64 +#define PCI_0SELECT_CAUSE                                   0xc74 +#define PCI_1INTERRUPT_CAUSE_MASK_REGISTER_LOW				0xca4 +#define PCI_1INTERRUPT_CAUSE_MASK_REGISTER_HIGH				0xce4 +#define PCI_1SELECT_CAUSE                                   0xcf4 +#define CPU_INT_0_MASK                                      0xe60 +#define CPU_INT_1_MASK                                      0xe64 +#define CPU_INT_2_MASK                                      0xe68 +#define CPU_INT_3_MASK                                      0xe6c + +/****************************************/ +/* I20 Support registers				*/ +/****************************************/ + +#define INBOUND_MESSAGE_REGISTER0_PCI_SIDE					0x010 +#define INBOUND_MESSAGE_REGISTER1_PCI_SIDE  				0x014 +#define OUTBOUND_MESSAGE_REGISTER0_PCI_SIDE 				0x018 +#define OUTBOUND_MESSAGE_REGISTER1_PCI_SIDE  				0x01C +#define INBOUND_DOORBELL_REGISTER_PCI_SIDE  				0x020 +#define INBOUND_INTERRUPT_CAUSE_REGISTER_PCI_SIDE  			0x024 +#define INBOUND_INTERRUPT_MASK_REGISTER_PCI_SIDE			0x028 +#define OUTBOUND_DOORBELL_REGISTER_PCI_SIDE 				0x02C +#define OUTBOUND_INTERRUPT_CAUSE_REGISTER_PCI_SIDE   		0x030 +#define OUTBOUND_INTERRUPT_MASK_REGISTER_PCI_SIDE   		0x034 +#define INBOUND_QUEUE_PORT_VIRTUAL_REGISTER_PCI_SIDE  		0x040 +#define OUTBOUND_QUEUE_PORT_VIRTUAL_REGISTER_PCI_SIDE   	0x044 +#define QUEUE_CONTROL_REGISTER_PCI_SIDE 					0x050 +#define QUEUE_BASE_ADDRESS_REGISTER_PCI_SIDE 				0x054 +#define INBOUND_FREE_HEAD_POINTER_REGISTER_PCI_SIDE			0x060 +#define INBOUND_FREE_TAIL_POINTER_REGISTER_PCI_SIDE  		0x064 +#define INBOUND_POST_HEAD_POINTER_REGISTER_PCI_SIDE 		0x068 +#define INBOUND_POST_TAIL_POINTER_REGISTER_PCI_SIDE 		0x06C +#define OUTBOUND_FREE_HEAD_POINTER_REGISTER_PCI_SIDE		0x070 +#define OUTBOUND_FREE_TAIL_POINTER_REGISTER_PCI_SIDE		0x074 +#define OUTBOUND_POST_HEAD_POINTER_REGISTER_PCI_SIDE		0x078 +#define OUTBOUND_POST_TAIL_POINTER_REGISTER_PCI_SIDE		0x07C + +#define INBOUND_MESSAGE_REGISTER0_CPU_SIDE					0x1C10 +#define INBOUND_MESSAGE_REGISTER1_CPU_SIDE  				0x1C14 +#define OUTBOUND_MESSAGE_REGISTER0_CPU_SIDE 				0x1C18 +#define OUTBOUND_MESSAGE_REGISTER1_CPU_SIDE  				0x1C1C +#define INBOUND_DOORBELL_REGISTER_CPU_SIDE  				0x1C20 +#define INBOUND_INTERRUPT_CAUSE_REGISTER_CPU_SIDE  			0x1C24 +#define INBOUND_INTERRUPT_MASK_REGISTER_CPU_SIDE			0x1C28 +#define OUTBOUND_DOORBELL_REGISTER_CPU_SIDE 				0x1C2C +#define OUTBOUND_INTERRUPT_CAUSE_REGISTER_CPU_SIDE   		0x1C30 +#define OUTBOUND_INTERRUPT_MASK_REGISTER_CPU_SIDE   		0x1C34 +#define INBOUND_QUEUE_PORT_VIRTUAL_REGISTER_CPU_SIDE  		0x1C40 +#define OUTBOUND_QUEUE_PORT_VIRTUAL_REGISTER_CPU_SIDE   	0x1C44 +#define QUEUE_CONTROL_REGISTER_CPU_SIDE 					0x1C50 +#define QUEUE_BASE_ADDRESS_REGISTER_CPU_SIDE 				0x1C54 +#define INBOUND_FREE_HEAD_POINTER_REGISTER_CPU_SIDE			0x1C60 +#define INBOUND_FREE_TAIL_POINTER_REGISTER_CPU_SIDE  		0x1C64 +#define INBOUND_POST_HEAD_POINTER_REGISTER_CPU_SIDE 		0x1C68 +#define INBOUND_POST_TAIL_POINTER_REGISTER_CPU_SIDE 		0x1C6C +#define OUTBOUND_FREE_HEAD_POINTER_REGISTER_CPU_SIDE		0x1C70 +#define OUTBOUND_FREE_TAIL_POINTER_REGISTER_CPU_SIDE		0x1C74 +#define OUTBOUND_POST_HEAD_POINTER_REGISTER_CPU_SIDE		0x1C78 +#define OUTBOUND_POST_TAIL_POINTER_REGISTER_CPU_SIDE		0x1C7C + +/****************************************/ +/* Communication Unit Registers         */ +/****************************************/ + +#define ETHERNET_0_ADDRESS_CONTROL_LOW						0xf200 +#define ETHERNET_0_ADDRESS_CONTROL_HIGH                     0xf204 +#define ETHERNET_0_RECEIVE_BUFFER_PCI_HIGH_ADDRESS          0xf208 +#define ETHERNET_0_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS         0xf20c +#define ETHERNET_0_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS      0xf210 +#define ETHERNET_0_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS     0xf214 +#define ETHERNET_0_HASH_TABLE_PCI_HIGH_ADDRESS              0xf218 +#define ETHERNET_1_ADDRESS_CONTROL_LOW                      0xf220 +#define ETHERNET_1_ADDRESS_CONTROL_HIGH                     0xf224 +#define ETHERNET_1_RECEIVE_BUFFER_PCI_HIGH_ADDRESS          0xf228 +#define ETHERNET_1_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS         0xf22c +#define ETHERNET_1_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS      0xf230 +#define ETHERNET_1_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS     0xf234 +#define ETHERNET_1_HASH_TABLE_PCI_HIGH_ADDRESS              0xf238 +#define ETHERNET_2_ADDRESS_CONTROL_LOW                      0xf240 +#define ETHERNET_2_ADDRESS_CONTROL_HIGH                     0xf244 +#define ETHERNET_2_RECEIVE_BUFFER_PCI_HIGH_ADDRESS          0xf248 +#define ETHERNET_2_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS         0xf24c +#define ETHERNET_2_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS      0xf250 +#define ETHERNET_2_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS     0xf254 +#define ETHERNET_2_HASH_TABLE_PCI_HIGH_ADDRESS              0xf258 +#define MPSC_0_ADDRESS_CONTROL_LOW                          0xf280 +#define MPSC_0_ADDRESS_CONTROL_HIGH                         0xf284 +#define MPSC_0_RECEIVE_BUFFER_PCI_HIGH_ADDRESS              0xf288 +#define MPSC_0_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS             0xf28c +#define MPSC_0_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS          0xf290 +#define MPSC_0_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS         0xf294 +#define MPSC_1_ADDRESS_CONTROL_LOW                          0xf2c0 +#define MPSC_1_ADDRESS_CONTROL_HIGH                         0xf2c4 +#define MPSC_1_RECEIVE_BUFFER_PCI_HIGH_ADDRESS              0xf2c8 +#define MPSC_1_TRANSMIT_BUFFER_PCI_HIGH_ADDRESS             0xf2cc +#define MPSC_1_RECEIVE_DESCRIPTOR_PCI_HIGH_ADDRESS          0xf2d0 +#define MPSC_1_TRANSMIT_DESCRIPTOR_PCI_HIGH_ADDRESS         0xf2d4 +#define SERIAL_INIT_PCI_HIGH_ADDRESS                        0xf320 +#define SERIAL_INIT_LAST_DATA                               0xf324 +#define SERIAL_INIT_STATUS_AND_CONTROL                      0xf328 +#define COMM_UNIT_ARBITER_CONTROL                           0xf300 +#define COMM_UNIT_CROSS_BAR_TIMEOUT                         0xf304 +#define COMM_UNIT_INTERRUPT_CAUSE                           0xf310 +#define COMM_UNIT_INTERRUPT_MASK                            0xf314 +#define COMM_UNIT_ERROR_ADDRESS                             0xf314 + +/****************************************/ +/* Cunit Debug  (for internal use)     */ +/****************************************/ + +#define CUNIT_ADDRESS                                       0xf340 +#define CUNIT_COMMAND_AND_ID                                0xf344 +#define CUNIT_WRITE_DATA_LOW                                0xf348 +#define CUNIT_WRITE_DATA_HIGH                               0xf34c +#define CUNIT_WRITE_BYTE_ENABLE                             0xf358 +#define CUNIT_READ_DATA_LOW                                 0xf350 +#define CUNIT_READ_DATA_HIGH                                0xf354 +#define CUNIT_READ_ID                                       0xf35c + +/****************************************/ +/* Fast Ethernet Unit Registers         */ +/****************************************/ + +/* Ethernet */ + +#define ETHERNET_PHY_ADDRESS_REGISTER                       0x2000 +#define ETHERNET_SMI_REGISTER                               0x2010 + +/* Ethernet 0 */ + +#define ETHERNET0_PORT_CONFIGURATION_REGISTER               0x2400 +#define ETHERNET0_PORT_CONFIGURATION_EXTEND_REGISTER        0x2408 +#define ETHERNET0_PORT_COMMAND_REGISTER                     0x2410 +#define ETHERNET0_PORT_STATUS_REGISTER                      0x2418 +#define ETHERNET0_SERIAL_PARAMETRS_REGISTER                 0x2420 +#define ETHERNET0_HASH_TABLE_POINTER_REGISTER               0x2428 +#define ETHERNET0_FLOW_CONTROL_SOURCE_ADDRESS_LOW           0x2430 +#define ETHERNET0_FLOW_CONTROL_SOURCE_ADDRESS_HIGH          0x2438 +#define ETHERNET0_SDMA_CONFIGURATION_REGISTER               0x2440 +#define ETHERNET0_SDMA_COMMAND_REGISTER                     0x2448 +#define ETHERNET0_INTERRUPT_CAUSE_REGISTER                  0x2450 +#define ETHERNET0_INTERRUPT_MASK_REGISTER                   0x2458 +#define ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER0              0x2480 +#define ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER1              0x2484 +#define ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER2              0x2488 +#define ETHERNET0_FIRST_RX_DESCRIPTOR_POINTER3              0x248c +#define ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER0            0x24a0 +#define ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER1            0x24a4 +#define ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER2            0x24a8 +#define ETHERNET0_CURRENT_RX_DESCRIPTOR_POINTER3            0x24ac +#define ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER0            0x24e0 +#define ETHERNET0_CURRENT_TX_DESCRIPTOR_POINTER1            0x24e4 +#define ETHERNET0_MIB_COUNTER_BASE                          0x2500 + +/* Ethernet 1 */ + +#define ETHERNET1_PORT_CONFIGURATION_REGISTER               0x2800 +#define ETHERNET1_PORT_CONFIGURATION_EXTEND_REGISTER        0x2808 +#define ETHERNET1_PORT_COMMAND_REGISTER                     0x2810 +#define ETHERNET1_PORT_STATUS_REGISTER                      0x2818 +#define ETHERNET1_SERIAL_PARAMETRS_REGISTER                 0x2820 +#define ETHERNET1_HASH_TABLE_POINTER_REGISTER               0x2828 +#define ETHERNET1_FLOW_CONTROL_SOURCE_ADDRESS_LOW           0x2830 +#define ETHERNET1_FLOW_CONTROL_SOURCE_ADDRESS_HIGH          0x2838 +#define ETHERNET1_SDMA_CONFIGURATION_REGISTER               0x2840 +#define ETHERNET1_SDMA_COMMAND_REGISTER                     0x2848 +#define ETHERNET1_INTERRUPT_CAUSE_REGISTER                  0x2850 +#define ETHERNET1_INTERRUPT_MASK_REGISTER                   0x2858 +#define ETHERNET1_FIRST_RX_DESCRIPTOR_POINTER0              0x2880 +#define ETHERNET1_FIRST_RX_DESCRIPTOR_POINTER1              0x2884 +#define ETHERNET1_FIRST_RX_DESCRIPTOR_POINTER2              0x2888 +#define ETHERNET1_FIRST_RX_DESCRIPTOR_POINTER3              0x288c +#define ETHERNET1_CURRENT_RX_DESCRIPTOR_POINTER0            0x28a0 +#define ETHERNET1_CURRENT_RX_DESCRIPTOR_POINTER1            0x28a4 +#define ETHERNET1_CURRENT_RX_DESCRIPTOR_POINTER2            0x28a8 +#define ETHERNET1_CURRENT_RX_DESCRIPTOR_POINTER3            0x28ac +#define ETHERNET1_CURRENT_TX_DESCRIPTOR_POINTER0            0x28e0 +#define ETHERNET1_CURRENT_TX_DESCRIPTOR_POINTER1            0x28e4 +#define ETHERNET1_MIB_COUNTER_BASE                          0x2900 + +/* Ethernet 2 */ + +#define ETHERNET2_PORT_CONFIGURATION_REGISTER               0x2c00 +#define ETHERNET2_PORT_CONFIGURATION_EXTEND_REGISTER        0x2c08 +#define ETHERNET2_PORT_COMMAND_REGISTER                     0x2c10 +#define ETHERNET2_PORT_STATUS_REGISTER                      0x2c18 +#define ETHERNET2_SERIAL_PARAMETRS_REGISTER                 0x2c20 +#define ETHERNET2_HASH_TABLE_POINTER_REGISTER               0x2c28 +#define ETHERNET2_FLOW_CONTROL_SOURCE_ADDRESS_LOW           0x2c30 +#define ETHERNET2_FLOW_CONTROL_SOURCE_ADDRESS_HIGH          0x2c38 +#define ETHERNET2_SDMA_CONFIGURATION_REGISTER               0x2c40 +#define ETHERNET2_SDMA_COMMAND_REGISTER                     0x2c48 +#define ETHERNET2_INTERRUPT_CAUSE_REGISTER                  0x2c50 +#define ETHERNET2_INTERRUPT_MASK_REGISTER                   0x2c58 +#define ETHERNET2_FIRST_RX_DESCRIPTOR_POINTER0              0x2c80 +#define ETHERNET2_FIRST_RX_DESCRIPTOR_POINTER1              0x2c84 +#define ETHERNET2_FIRST_RX_DESCRIPTOR_POINTER2              0x2c88 +#define ETHERNET2_FIRST_RX_DESCRIPTOR_POINTER3              0x2c8c +#define ETHERNET2_CURRENT_RX_DESCRIPTOR_POINTER0            0x2ca0 +#define ETHERNET2_CURRENT_RX_DESCRIPTOR_POINTER1            0x2ca4 +#define ETHERNET2_CURRENT_RX_DESCRIPTOR_POINTER2            0x2ca8 +#define ETHERNET2_CURRENT_RX_DESCRIPTOR_POINTER3            0x2cac +#define ETHERNET2_CURRENT_TX_DESCRIPTOR_POINTER0            0x2ce0 +#define ETHERNET2_CURRENT_TX_DESCRIPTOR_POINTER1            0x2ce4 +#define ETHERNET2_MIB_COUNTER_BASE                          0x2d00 + +/****************************************/ +/* SDMA Registers                       */ +/****************************************/ + +#define SDMA_GROUP_CONFIGURATION_REGISTER                   0xb1f0 +#define CHANNEL0_CONFIGURATION_REGISTER                     0x4000 +#define CHANNEL0_COMMAND_REGISTER                           0x4008 +#define CHANNEL0_RX_CMD_STATUS                              0x4800 +#define CHANNEL0_RX_PACKET_AND_BUFFER_SIZES                 0x4804 +#define CHANNEL0_RX_BUFFER_POINTER                          0x4808 +#define CHANNEL0_RX_NEXT_POINTER                            0x480c +#define CHANNEL0_CURRENT_RX_DESCRIPTOR_POINTER              0x4810 +#define CHANNEL0_TX_CMD_STATUS                              0x4C00 +#define CHANNEL0_TX_PACKET_SIZE                             0x4C04 +#define CHANNEL0_TX_BUFFER_POINTER                          0x4C08 +#define CHANNEL0_TX_NEXT_POINTER                            0x4C0c +#define CHANNEL0_CURRENT_TX_DESCRIPTOR_POINTER              0x4c10 +#define CHANNEL0_FIRST_TX_DESCRIPTOR_POINTER                0x4c14 +#define CHANNEL1_CONFIGURATION_REGISTER                     0x5000 +#define CHANNEL1_COMMAND_REGISTER                           0x5008 +#define CHANNEL1_RX_CMD_STATUS                              0x5800 +#define CHANNEL1_RX_PACKET_AND_BUFFER_SIZES                 0x5804 +#define CHANNEL1_RX_BUFFER_POINTER                          0x5808 +#define CHANNEL1_RX_NEXT_POINTER                            0x580c +#define CHANNEL1_TX_CMD_STATUS                              0x5C00 +#define CHANNEL1_TX_PACKET_SIZE                             0x5C04 +#define CHANNEL1_TX_BUFFER_POINTER                          0x5C08 +#define CHANNEL1_TX_NEXT_POINTER                            0x5C0c +#define CHANNEL1_CURRENT_RX_DESCRIPTOR_POINTER              0x5810 +#define CHANNEL1_CURRENT_TX_DESCRIPTOR_POINTER              0x5c10 +#define CHANNEL1_FIRST_TX_DESCRIPTOR_POINTER                0x5c14 +#define CHANNEL2_CONFIGURATION_REGISTER                     0x6000 +#define CHANNEL2_COMMAND_REGISTER                           0x6008 +#define CHANNEL2_RX_CMD_STATUS                              0x6800 +#define CHANNEL2_RX_PACKET_AND_BUFFER_SIZES                 0x6804 +#define CHANNEL2_RX_BUFFER_POINTER                          0x6808 +#define CHANNEL2_RX_NEXT_POINTER                            0x680c +#define CHANNEL2_CURRENT_RX_DESCRIPTOR_POINTER              0x6810 +#define CHANNEL2_TX_CMD_STATUS                              0x6C00 +#define CHANNEL2_TX_PACKET_SIZE                             0x6C04 +#define CHANNEL2_TX_BUFFER_POINTER                          0x6C08 +#define CHANNEL2_TX_NEXT_POINTER                            0x6C0c +#define CHANNEL2_CURRENT_RX_DESCRIPTOR_POINTER              0x6810 +#define CHANNEL2_CURRENT_TX_DESCRIPTOR_POINTER              0x6c10 +#define CHANNEL2_FIRST_TX_DESCRIPTOR_POINTER                0x6c14 + +/* SDMA Interrupt */ + +#define SDMA_CAUSE                                          0xb820 +#define SDMA_MASK                                           0xb8a0 + + +/****************************************/ +/* Baude Rate Generators Registers      */ +/****************************************/ + +/* BRG 0 */ + +#define BRG0_CONFIGURATION_REGISTER                         0xb200 +#define BRG0_BAUDE_TUNING_REGISTER                          0xb204 + +/* BRG 1 */ + +#define BRG1_CONFIGURATION_REGISTER                         0xb208 +#define BRG1_BAUDE_TUNING_REGISTER                          0xb20c + +/* BRG 2 */ + +#define BRG2_CONFIGURATION_REGISTER                         0xb210 +#define BRG2_BAUDE_TUNING_REGISTER                          0xb214 + +/* BRG Interrupts */ + +#define BRG_CAUSE_REGISTER                                  0xb834 +#define BRG_MASK_REGISTER                                   0xb8b4 + +/* MISC */ + +#define MAIN_ROUTING_REGISTER                               0xb400 +#define RECEIVE_CLOCK_ROUTING_REGISTER                      0xb404 +#define TRANSMIT_CLOCK_ROUTING_REGISTER                     0xb408 +#define COMM_UNIT_ARBITER_CONFIGURATION_REGISTER            0xb40c +#define WATCHDOG_CONFIGURATION_REGISTER                     0xb410 +#define WATCHDOG_VALUE_REGISTER                             0xb414 + + +/****************************************/ +/* Flex TDM Registers                   */ +/****************************************/ + +/* FTDM Port */ + +#define FLEXTDM_TRANSMIT_READ_POINTER                       0xa800 +#define FLEXTDM_RECEIVE_READ_POINTER                        0xa804 +#define FLEXTDM_CONFIGURATION_REGISTER                      0xa808 +#define FLEXTDM_AUX_CHANNELA_TX_REGISTER                    0xa80c +#define FLEXTDM_AUX_CHANNELA_RX_REGISTER                    0xa810 +#define FLEXTDM_AUX_CHANNELB_TX_REGISTER                    0xa814 +#define FLEXTDM_AUX_CHANNELB_RX_REGISTER                    0xa818 + +/* FTDM Interrupts */ + +#define FTDM_CAUSE_REGISTER                                 0xb830 +#define FTDM_MASK_REGISTER                                  0xb8b0 + + +/****************************************/ +/* GPP Interface Registers              */ +/****************************************/ + +#define GPP_IO_CONTROL                                      0xf100 +#define GPP_LEVEL_CONTROL                                   0xf110 +#define GPP_VALUE                                           0xf104 +#define GPP_INTERRUPT_CAUSE                                 0xf108 +#define GPP_INTERRUPT_MASK                                  0xf10c + +#define MPP_CONTROL0                                        0xf000 +#define MPP_CONTROL1                                        0xf004 +#define MPP_CONTROL2                                        0xf008 +#define MPP_CONTROL3                                        0xf00c +#define DEBUG_PORT_MULTIPLEX                                0xf014 +#define SERIAL_PORT_MULTIPLEX                               0xf010 + +/****************************************/ +/* I2C Registers                        */ +/****************************************/ + +#define I2C_SLAVE_ADDRESS                                   0xc000 +#define I2C_EXTENDED_SLAVE_ADDRESS                          0xc040 +#define I2C_DATA                                            0xc004 +#define I2C_CONTROL                                         0xc008 +#define I2C_STATUS_BAUDE_RATE                               0xc00C +#define I2C_SOFT_RESET                                      0xc01c + +/****************************************/ +/* MPSC Registers                       */ +/****************************************/ + +/* MPSC0  */ + +#define MPSC0_MAIN_CONFIGURATION_LOW                        0x8000 +#define MPSC0_MAIN_CONFIGURATION_HIGH                       0x8004 +#define MPSC0_PROTOCOL_CONFIGURATION                        0x8008 +#define CHANNEL0_REGISTER1                                  0x800c +#define CHANNEL0_REGISTER2                                  0x8010 +#define CHANNEL0_REGISTER3                                  0x8014 +#define CHANNEL0_REGISTER4                                  0x8018 +#define CHANNEL0_REGISTER5                                  0x801c +#define CHANNEL0_REGISTER6                                  0x8020 +#define CHANNEL0_REGISTER7                                  0x8024 +#define CHANNEL0_REGISTER8                                  0x8028 +#define CHANNEL0_REGISTER9                                  0x802c +#define CHANNEL0_REGISTER10                                 0x8030 +#define CHANNEL0_REGISTER11                                 0x8034 + +/* MPSC1  */ + +#define MPSC1_MAIN_CONFIGURATION_LOW                        0x8840 +#define MPSC1_MAIN_CONFIGURATION_HIGH                       0x8844 +#define MPSC1_PROTOCOL_CONFIGURATION                        0x8848 +#define CHANNEL1_REGISTER1                                  0x884c +#define CHANNEL1_REGISTER2                                  0x8850 +#define CHANNEL1_REGISTER3                                  0x8854 +#define CHANNEL1_REGISTER4                                  0x8858 +#define CHANNEL1_REGISTER5                                  0x885c +#define CHANNEL1_REGISTER6                                  0x8860 +#define CHANNEL1_REGISTER7                                  0x8864 +#define CHANNEL1_REGISTER8                                  0x8868 +#define CHANNEL1_REGISTER9                                  0x886c +#define CHANNEL1_REGISTER10                                 0x8870 +#define CHANNEL1_REGISTER11                                 0x8874 + +/* MPSC2  */ + +#define MPSC2_MAIN_CONFIGURATION_LOW                        0x9040 +#define MPSC2_MAIN_CONFIGURATION_HIGH                       0x9044 +#define MPSC2_PROTOCOL_CONFIGURATION                        0x9048 +#define CHANNEL2_REGISTER1                                  0x904c +#define CHANNEL2_REGISTER2                                  0x9050 +#define CHANNEL2_REGISTER3                                  0x9054 +#define CHANNEL2_REGISTER4                                  0x9058 +#define CHANNEL2_REGISTER5                                  0x905c +#define CHANNEL2_REGISTER6                                  0x9060 +#define CHANNEL2_REGISTER7                                  0x9064 +#define CHANNEL2_REGISTER8                                  0x9068 +#define CHANNEL2_REGISTER9                                  0x906c +#define CHANNEL2_REGISTER10                                 0x9070 +#define CHANNEL2_REGISTER11                                 0x9074 + +/* MPSCs Interupts  */ + +#define MPSC0_CAUSE                                         0xb824 +#define MPSC0_MASK                                          0xb8a4 +#define MPSC1_CAUSE                                         0xb828 +#define MPSC1_MASK                                          0xb8a8 +#define MPSC2_CAUSE                                         0xb82c +#define MPSC2_MASK                                          0xb8ac + +#endif /* __INCgt64260rh */ diff --git a/include/galileo/memory.h b/include/galileo/memory.h new file mode 100644 index 000000000..99bd79ba6 --- /dev/null +++ b/include/galileo/memory.h @@ -0,0 +1,86 @@ +/* Memory.h - Memory mappings and remapping functions declarations */ + +/* Copyright - Galileo technology. */ + +#ifndef __INCmemoryh +#define __INCmemoryh + +/* includes */ + +#include "core.h" + +/* defines */ + +#define DONT_MODIFY     0xffffffff +#define PARITY_SUPPORT  0x40000000 + +#define _8BIT           0x00000000 +#define _16BIT          0x00100000 +#define _32BIT          0x00200000 +#define _64BIT          0x00300000 + +/* typedefs */ + + typedef struct deviceParam +{                               /* boundary values  */ +    unsigned int    turnOff;    /* 0x0 - 0xf        */ +    unsigned int    acc2First;  /* 0x0 - 0x1f       */ +    unsigned int    acc2Next;   /* 0x0 - 0x1f       */ +    unsigned int    ale2Wr;     /* 0x0 - 0xf        */ +    unsigned int    wrLow;      /* 0x0 - 0xf        */ +    unsigned int    wrHigh;     /* 0x0 - 0xf        */ +    unsigned int    deviceWidth;    /* in Bytes  */ +} DEVICE_PARAM; + +typedef enum __memBank{BANK0,BANK1,BANK2,BANK3} MEMORY_BANK; +typedef enum __memDevice{DEVICE0,DEVICE1,DEVICE2,DEVICE3,BOOT_DEVICE} DEVICE; + +typedef enum __memoryProtectRegion{MEM_REGION0,MEM_REGION1,MEM_REGION2,       \ +                                   MEM_REGION3,MEM_REGION4,MEM_REGION5,       \ +                                   MEM_REGION6,MEM_REGION7}                   \ +                                   MEMORY_PROTECT_REGION; +typedef enum __memoryAccess{MEM_ACCESS_ALLOWED,MEM_ACCESS_FORBIDEN}           \ +                            MEMORY_ACCESS; +typedef enum __memoryWrite{MEM_WRITE_ALLOWED,MEM_WRITE_FORBIDEN}              \ +                           MEMORY_ACCESS_WRITE; +typedef enum __memoryCacheProtect{MEM_CACHE_ALLOWED,MEM_CACHE_FORBIDEN}       \ +                                  MEMORY_CACHE_PROTECT; +typedef enum __memorySnoopType{MEM_NO_SNOOP,MEM_SNOOP_WT,MEM_SNOOP_WB}        \ +                               MEMORY_SNOOP_TYPE; +typedef enum __memorySnoopRegion{MEM_SNOOP_REGION0,MEM_SNOOP_REGION1,         \ +                                 MEM_SNOOP_REGION2,MEM_SNOOP_REGION3}         \ +                                 MEMORY_SNOOP_REGION; + +/* functions */ +unsigned int memoryGetBankBaseAddress(MEMORY_BANK bank); +unsigned int memoryGetDeviceBaseAddress(DEVICE device); +unsigned int memoryGetBankSize(MEMORY_BANK bank); +unsigned int memoryGetDeviceSize(DEVICE device); +unsigned int memoryGetDeviceWidth(DEVICE device); + +/* when given base Address and size Set new WINDOW for SCS_X. (X = 0,1,2 or 3*/ +bool memoryMapBank(MEMORY_BANK bank, unsigned int bankBase,unsigned int bankLength); +bool memoryMapDeviceSpace(DEVICE device, unsigned int deviceBase,unsigned int deviceLength); + +/* Change the Internal Register Base Address to a new given Address. */ +bool memoryMapInternalRegistersSpace(unsigned int internalRegBase); +/* returns internal Register Space Base Address. */ +unsigned int memoryGetInternalRegistersSpace(void); +/* Configurate the protection feature to a given space. */ +bool memorySetProtectRegion(MEMORY_PROTECT_REGION region, +                            MEMORY_ACCESS memoryAccess, +                            MEMORY_ACCESS_WRITE memoryWrite, +                            MEMORY_CACHE_PROTECT cacheProtection, +                            unsigned int baseAddress, +                            unsigned int regionLength); +/* Configurate the snoop feature to a given space. */ +bool memorySetRegionSnoopMode(MEMORY_SNOOP_REGION region, +                              MEMORY_SNOOP_TYPE snoopType, +                              unsigned int baseAddress, +                              unsigned int regionLength); + +bool memoryRemapAddress(unsigned int remapReg, unsigned int remapValue); +bool memoryGetDeviceParam(DEVICE_PARAM *deviceParam, DEVICE deviceNum); +bool memorySetDeviceParam(DEVICE_PARAM *deviceParam, DEVICE deviceNum); +#endif  /* __INCmemoryh */ + diff --git a/include/jffs2/compr_rubin.h b/include/jffs2/compr_rubin.h new file mode 100644 index 000000000..f26f476da --- /dev/null +++ b/include/jffs2/compr_rubin.h @@ -0,0 +1,11 @@ +/* Rubin encoder/decoder header       */ +/* work started at   : aug   3, 1994  */ +/* last modification : aug  15, 1994  */ +/* $Id: compr_rubin.h,v 1.1 2002/01/16 23:34:32 nyet Exp $ */ + +#define RUBIN_REG_SIZE   16 +#define UPPER_BIT_RUBIN    (((long) 1)<<(RUBIN_REG_SIZE-1)) +#define LOWER_BITS_RUBIN   ((((long) 1)<<(RUBIN_REG_SIZE-1))-1) + +void dynrubin_decompress(unsigned char *data_in, unsigned char *cpage_out, +		   unsigned long sourcelen, unsigned long dstlen); diff --git a/include/jffs2/mini_inflate.h b/include/jffs2/mini_inflate.h new file mode 100644 index 000000000..f79aac7c9 --- /dev/null +++ b/include/jffs2/mini_inflate.h @@ -0,0 +1,82 @@ +/*------------------------------------------------------------------------- + * Filename:      mini_inflate.h + * Version:       $Id: mini_inflate.h,v 1.2 2002/01/17 00:53:20 nyet Exp $ + * Copyright:     Copyright (C) 2001, Russ Dill + * Author:        Russ Dill <Russ.Dill@asu.edu> + * Description:   Mini deflate implementation + *-----------------------------------------------------------------------*/ +/* + * + * 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 + * + */ + +typedef __SIZE_TYPE__ size; + +#define NO_ERROR 0 +#define COMP_UNKNOWN 1	 /* The specififed bytype is invalid */ +#define CODE_NOT_FOUND 2 /* a huffman code in the stream could not be decoded */ +#define TOO_MANY_BITS 3	 /* pull_bits was passed an argument that is too +			  * large */ + +/* This struct represents an entire huffman code set. It has various lookup + * tables to speed decoding */ +struct huffman_set { +	int bits;	 /* maximum bit length */ +	int num_symbols; /* Number of symbols this code can represent */ +	int *lengths;	 /* The bit length of symbols */ +	int *symbols;	 /* All of the symbols, sorted by the huffman code */ +	int *count;	 /* the number of codes of this bit length */ +	int *first;	 /* the first code of this bit length */ +	int *pos;	 /* the symbol that first represents (in the symbols +			  * array) */ +}; + +struct bitstream { +	unsigned char *data; /* increments as we move from byte to byte */ +	unsigned char bit;   /* 0 to 7 */ +	void *(*memcpy)(void *, const void *, size); +	unsigned long decoded; /* The number of bytes decoded */ +	int error; + +	int  distance_count[16]; +	int  distance_first[16]; +	int  distance_pos[16]; +	int  distance_lengths[32]; +	int  distance_symbols[32]; + +	int  code_count[8]; +	int  code_first[8]; +	int  code_pos[8]; +	int  code_lengths[19]; +	int  code_symbols[19]; + +	int  length_count[16]; +	int  length_first[16]; +	int  length_pos[16]; +	int  length_lengths[288]; +	int  length_symbols[288]; + +	struct huffman_set codes; +	struct huffman_set lengths; +	struct huffman_set distance; +}; + +#define NO_COMP 0 +#define FIXED_COMP 1 +#define DYNAMIC_COMP 2 + +long decompress_block(unsigned char *dest, unsigned char *source, +		      void *(*inflate_memcpy)(void *dest, const void *src, size n)); diff --git a/include/linux/mtd/doc2000.h b/include/linux/mtd/doc2000.h new file mode 100644 index 000000000..c703f77fe --- /dev/null +++ b/include/linux/mtd/doc2000.h @@ -0,0 +1,158 @@ + +/* Linux driver for Disk-On-Chip 2000       */ +/* (c) 1999 Machine Vision Holdings, Inc.   */ +/* Author: David Woodhouse <dwmw2@mvhi.com> */ +/* $Id: doc2000.h,v 1.15 2001/09/19 00:22:15 dwmw2 Exp $ */ + +#ifndef __MTD_DOC2000_H__ +#define __MTD_DOC2000_H__ + +struct DiskOnChip; + +#include <linux/mtd/nftl.h> + +#define DoC_Sig1 0 +#define DoC_Sig2 1 + +#define DoC_ChipID		0x1000 +#define DoC_DOCStatus		0x1001 +#define DoC_DOCControl		0x1002 +#define DoC_FloorSelect		0x1003 +#define DoC_CDSNControl		0x1004 +#define DoC_CDSNDeviceSelect 	0x1005 +#define DoC_ECCConf 		0x1006 +#define DoC_2k_ECCStatus	0x1007 + +#define DoC_CDSNSlowIO		0x100d +#define DoC_ECCSyndrome0	0x1010 +#define DoC_ECCSyndrome1	0x1011 +#define DoC_ECCSyndrome2	0x1012 +#define DoC_ECCSyndrome3	0x1013 +#define DoC_ECCSyndrome4	0x1014 +#define DoC_ECCSyndrome5	0x1015 +#define DoC_AliasResolution 	0x101b +#define DoC_ConfigInput		0x101c +#define DoC_ReadPipeInit 	0x101d +#define DoC_WritePipeTerm 	0x101e +#define DoC_LastDataRead 	0x101f +#define DoC_NOP 		0x1020 + +#define DoC_Mil_CDSN_IO 	0x0800 +#define DoC_2k_CDSN_IO 		0x1800 + +#define ReadDOC_(adr, reg)      ((volatile unsigned char)(*(volatile __u8 *)(((unsigned long)adr)+((reg))))) +#define WriteDOC_(d, adr, reg)  do{ *(volatile __u8 *)(((unsigned long)adr)+((reg))) = (__u8)d; eieio();} while(0) + +#define DOC_IOREMAP_LEN		0x4000 + +/* These are provided to directly use the DoC_xxx defines */ +#define ReadDOC(adr, reg)      ReadDOC_(adr,DoC_##reg) +#define WriteDOC(d, adr, reg)  WriteDOC_(d,adr,DoC_##reg) + +#define DOC_MODE_RESET 		0 +#define DOC_MODE_NORMAL 	1 +#define DOC_MODE_RESERVED1 	2 +#define DOC_MODE_RESERVED2 	3 + +#define DOC_MODE_MDWREN 	4 +#define DOC_MODE_CLR_ERR 	0x80 + +#define DOC_ChipID_UNKNOWN 	0x00 +#define DOC_ChipID_Doc2k 	0x20 +#define DOC_ChipID_DocMil 	0x30 + +#define CDSN_CTRL_FR_B 		0x80 +#define CDSN_CTRL_ECC_IO 	0x20 +#define CDSN_CTRL_FLASH_IO 	0x10 +#define CDSN_CTRL_WP 		0x08 +#define CDSN_CTRL_ALE 		0x04 +#define CDSN_CTRL_CLE 		0x02 +#define CDSN_CTRL_CE 		0x01 + +#define DOC_ECC_RESET 		0 +#define DOC_ECC_ERROR 		0x80 +#define DOC_ECC_RW 		0x20 +#define DOC_ECC__EN 		0x08 +#define DOC_TOGGLE_BIT 		0x04 +#define DOC_ECC_RESV 		0x02 +#define DOC_ECC_IGNORE		0x01 + +/* We have to also set the reserved bit 1 for enable */ +#define DOC_ECC_EN (DOC_ECC__EN | DOC_ECC_RESV) +#define DOC_ECC_DIS (DOC_ECC_RESV) + +struct Nand { +	char floor, chip; +	unsigned long curadr; +	unsigned char curmode; +	/* Also some erase/write/pipeline info when we get that far */ +}; + +#define MAX_FLOORS 4 +#define MAX_CHIPS 4 + +#define MAX_FLOORS_MIL 4 +#define MAX_CHIPS_MIL 1 + +#define ADDR_COLUMN 1 +#define ADDR_PAGE 2 +#define ADDR_COLUMN_PAGE 3 + +struct DiskOnChip { +	unsigned long physadr; +	unsigned long virtadr; +	unsigned long totlen; +	char* name; +	char ChipID; /* Type of DiskOnChip */ +	int ioreg; + +	char* chips_name; +	unsigned long mfr; /* Flash IDs - only one type of flash per device */ +	unsigned long id; +	int chipshift; +	char page256; +	char pageadrlen; +	unsigned long erasesize; + +	int curfloor; +	int curchip; + +	int numchips; +	struct Nand *chips; + +	int nftl_found; +	struct NFTLrecord nftl; +}; + +#define SECTORSIZE 512 + +/* Return codes from doc_write(), doc_read(), and doc_erase(). + */ +#define DOC_OK		0 +#define DOC_EIO		1 +#define DOC_EINVAL	2 +#define DOC_EECC	3 +#define DOC_ETIMEOUT	4 + +/* + * Function Prototypes + */ +int doc_decode_ecc(unsigned char sector[512], unsigned char ecc1[6]); + +int doc_rw(struct DiskOnChip* this, int cmd, loff_t from, size_t len, +	   size_t *retlen, u_char *buf); +int doc_read_ecc(struct DiskOnChip* this, loff_t from, size_t len, +		 size_t *retlen, u_char *buf, u_char *eccbuf); +int doc_write_ecc(struct DiskOnChip* this, loff_t to, size_t len, +		  size_t *retlen, const u_char *buf, u_char *eccbuf); +int doc_read_oob(struct DiskOnChip* this, loff_t ofs, size_t len, +		 size_t *retlen, u_char *buf); +int doc_write_oob(struct DiskOnChip* this, loff_t ofs, size_t len, +		  size_t *retlen, const u_char *buf); +int doc_erase (struct DiskOnChip* this, loff_t ofs, size_t len); + +void doc_probe(unsigned long physadr); + +void doc_print(struct DiskOnChip*); + +#endif /* __MTD_DOC2000_H__ */ diff --git a/include/linux/time.h b/include/linux/time.h new file mode 100644 index 000000000..bf12b99d3 --- /dev/null +++ b/include/linux/time.h @@ -0,0 +1,158 @@ +#ifndef _LINUX_TIME_H +#define _LINUX_TIME_H + +#include <linux/types.h> + +#define _DEFUN(a,b,c) a(c) +#define _CONST const +#define _AND , + +#define _REENT_ONLY + +#define SECSPERMIN	60L +#define MINSPERHOUR	60L +#define HOURSPERDAY	24L +#define SECSPERHOUR	(SECSPERMIN * MINSPERHOUR) +#define SECSPERDAY	(SECSPERHOUR * HOURSPERDAY) +#define DAYSPERWEEK	7 +#define MONSPERYEAR	12 + +#define YEAR_BASE	1900 +#define EPOCH_YEAR      1970 +#define EPOCH_WDAY      4 + +#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0) + + +/* Used by other time functions.  */ +struct tm { +    int tm_sec;                   /* Seconds.     [0-60] (1 leap second) */ +    int tm_min;                   /* Minutes.     [0-59] */ +    int tm_hour;                  /* Hours.       [0-23] */ +    int tm_mday;                  /* Day.         [1-31] */ +    int tm_mon;                   /* Month.       [0-11] */ +    int tm_year;                  /* Year - 1900.  */ +    int tm_wday;                  /* Day of week. [0-6] */ +    int tm_yday;                  /* Days in year.[0-365] */ +    int tm_isdst;                 /* DST.         [-1/0/1]*/ + +# ifdef __USE_BSD +    long int tm_gmtoff;           /* Seconds east of UTC.  */ +    __const char *tm_zone;        /* Timezone abbreviation.  */ +# else +    long int __tm_gmtoff;         /* Seconds east of UTC.  */ +    __const char *__tm_zone;      /* Timezone abbreviation.  */ +# endif +}; + +static inline char * +_DEFUN (asctime_r, (tim_p, result), +	_CONST struct tm *tim_p _AND +	char *result) +{ +    static _CONST char day_name[7][3] = { +	"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" +    }; +    static _CONST char mon_name[12][3] = { +	"Jan", "Feb", "Mar", "Apr", "May", "Jun", +	"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" +    }; + +    sprintf (result, "%.3s %.3s %.2d %.2d:%.2d:%.2d %d\n", +	    day_name[tim_p->tm_wday], +	    mon_name[tim_p->tm_mon], +	    tim_p->tm_mday, tim_p->tm_hour, tim_p->tm_min, +	    tim_p->tm_sec, 1900 + tim_p->tm_year); +    return result; +} + +static inline struct tm * +_DEFUN (localtime_r, (tim_p, res), +	_CONST time_t * tim_p _AND +	struct tm *res) +{ +    static _CONST int mon_lengths[2][MONSPERYEAR] = { +      {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, +      {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} +    } ; + +    static _CONST int year_lengths[2] = { +      365, +      366 +    } ; + +    long days, rem; +    int y; +    int yleap; +    _CONST int *ip; + +    days = ((long) *tim_p) / SECSPERDAY; +    rem = ((long) *tim_p) % SECSPERDAY; +    while (rem < 0) +    { +	rem += SECSPERDAY; +	--days; +    } +    while (rem >= SECSPERDAY) +    { +	rem -= SECSPERDAY; +	++days; +    } + +    /* compute hour, min, and sec */ +    res->tm_hour = (int) (rem / SECSPERHOUR); +    rem %= SECSPERHOUR; +    res->tm_min = (int) (rem / SECSPERMIN); +    res->tm_sec = (int) (rem % SECSPERMIN); + +    /* compute day of week */ +    if ((res->tm_wday = ((EPOCH_WDAY + days) % DAYSPERWEEK)) < 0) +	res->tm_wday += DAYSPERWEEK; + +    /* compute year & day of year */ +    y = EPOCH_YEAR; +    if (days >= 0) +    { +	for (;;) +	{ +	    yleap = isleap(y); +	    if (days < year_lengths[yleap]) +		break; +	    y++; +	    days -= year_lengths[yleap]; +	} +    } +    else +    { +	do +	{ +	    --y; +	    yleap = isleap(y); +	    days += year_lengths[yleap]; +	} while (days < 0); +    } + +    res->tm_year = y - YEAR_BASE; +    res->tm_yday = days; +    ip = mon_lengths[yleap]; +    for (res->tm_mon = 0; days >= ip[res->tm_mon]; ++res->tm_mon) +	days -= ip[res->tm_mon]; +    res->tm_mday = days + 1; + +    /* set daylight saving time flag */ +    res->tm_isdst = -1; + +    return (res); +} + +static inline char * +_DEFUN (ctime_r, (tim_p, result), +	_CONST time_t * tim_p _AND +	char * result) + +{ +    struct tm tm; +    return asctime_r (localtime_r (tim_p, &tm), result); +} + +#endif diff --git a/include/mk48t59.h b/include/mk48t59.h new file mode 100644 index 000000000..03c992e06 --- /dev/null +++ b/include/mk48t59.h @@ -0,0 +1,64 @@ +/* + * (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Andreas Heppel <aheppel@sysgo.de> + * + * 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 + */ + +/* + * Date & Time support for the MK48T59 RTC + */ + + +#if defined(CONFIG_RTC_MK48T59) && (CONFIG_COMMANDS & CFG_CMD_DATE) + +#define RTC_PORT_ADDR0		CFG_ISA_IO +  0x70 +#define RTC_PORT_ADDR1		RTC_PORT_ADDR0 +  0x1 +#define RTC_PORT_DATA		CFG_ISA_IO +  0x76 + +/* RTC Offsets */ +#define RTC_SECONDS             0x1FF9 +#define RTC_MINUTES             0x1FFA +#define RTC_HOURS               0x1FFB +#define RTC_DAY_OF_WEEK         0x1FFC +#define RTC_DAY_OF_MONTH        0x1FFD +#define RTC_MONTH               0x1FFE +#define RTC_YEAR                0x1FFF + +#define RTC_CONTROLA            0x1FF8 +#define RTC_CA_WRITE            0x80 +#define RTC_CA_READ             0x40 +#define RTC_CA_CALIB_SIGN       0x20 +#define RTC_CA_CALIB_MASK       0x1f + +#define RTC_CONTROLB            0x1FF9 +#define RTC_CB_STOP             0x80 + +#define RTC_WATCHDOG			0x1FF7 +#define RTC_WDS					0x80 +#define RTC_WD_RB_16TH			0x0 +#define RTC_WD_RB_4TH			0x1 +#define RTC_WD_RB_1				0x2 +#define RTC_WD_RB_4				0x3 + +void rtc_set_watchdog(short multi, short res); +void *nvram_read(void *dest, const short src, size_t count); +void nvram_write(short dest, const void *src, size_t count); + +#endif diff --git a/include/part.h b/include/part.h new file mode 100644 index 000000000..e43978c65 --- /dev/null +++ b/include/part.h @@ -0,0 +1,99 @@ +/* + * (C) Copyright 2000, 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * 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 _PART_H +#define _PART_H + + +typedef struct block_dev_desc { +	int           if_type;    /* type of the interface */ +	int           dev;        /* device number */ +	unsigned char part_type;  /* partition type */ +	unsigned char target;			/* target SCSI ID */ +	unsigned char lun;				/* target LUN */ +	unsigned char type;				/* device type */ +	unsigned long lba;        /* number of blocks */ +	unsigned long blksz;			/* block size */ +	unsigned char vendor[40]; /* IDE model, SCSI Vendor */ +	unsigned char product[20];/* IDE Serial no, SCSI product */ +	unsigned char revision[8];/* firmware revision */ +	unsigned char removable;	/* removable device */ +	unsigned long (*block_read)(int dev,unsigned long start,unsigned long blkcnt, unsigned long *buffer); +}block_dev_desc_t; +/* Interface types: */ +#define IF_TYPE_UNKNOWN	0 +#define IF_TYPE_IDE			1 +#define IF_TYPE_SCSI		2 +#define IF_TYPE_ATAPI		3 +#define IF_TYPE_USB			4 +#define IF_TYPE_DOC			5 +/* Part types */ +#define	PART_TYPE_UNKNOWN	0x00 +#define PART_TYPE_MAC		0x01 +#define PART_TYPE_DOS		0x02 +#define PART_TYPE_ISO		0x03 +/* device types */ +#define DEV_TYPE_UNKNOWN 0xff /* not connected */ +#define DEV_TYPE_HARDDISK 0x00 /* harddisk */ +#define DEV_TYPE_TAPE 		0x01 /* Tape */ +#define DEV_TYPE_CDROM 		0x05 /* CD-ROM */ +#define DEV_TYPE_OPDISK 	0x07 /* optical disk */ + +typedef	struct disk_partition { +	ulong	start;		/* # of first block in partition	*/ +	ulong	size;		/* number of blocks in partition	*/ +	ulong	blksz;		/* block size in bytes			*/ +	uchar	name[32];	/* partition name			*/ +	uchar	type[32];	/* string type description		*/ +} disk_partition_t; + +/* disk/part.c */ +int get_partition_info (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); +void print_part (block_dev_desc_t *dev_desc); +void  init_part (block_dev_desc_t *dev_desc); +void dev_print(block_dev_desc_t *dev_desc); + + +#ifdef CONFIG_MAC_PARTITION +/* disk/part_mac.c */ +int get_partition_info_mac (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); +void print_part_mac (block_dev_desc_t *dev_desc); +int   test_part_mac (block_dev_desc_t *dev_desc); +#endif + +#ifdef CONFIG_DOS_PARTITION +/* disk/part_dos.c */ +int get_partition_info_dos (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); +void print_part_dos (block_dev_desc_t *dev_desc); +int   test_part_dos (block_dev_desc_t *dev_desc); +#endif + +#ifdef CONFIG_ISO_PARTITION +/* disk/part_iso.c */ +int get_partition_info_iso (block_dev_desc_t * dev_desc, int part, disk_partition_t *info); +void print_part_iso (block_dev_desc_t *dev_desc); +int   test_part_iso (block_dev_desc_t *dev_desc); +#endif + +#endif /* _PART_H */ + + diff --git a/include/usb.h b/include/usb.h new file mode 100644 index 000000000..c3cc8903a --- /dev/null +++ b/include/usb.h @@ -0,0 +1,352 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland + * + * 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 + * + * Note: Part of this code has been derived from linux + * + */ +#ifndef _USB_H_ +#define _USB_H_ + +#include <usb_defs.h> + +/* Everything is aribtrary */ +#define USB_ALTSETTINGALLOC          4 +#define USB_MAXALTSETTING	           128  /* Hard limit */ + +#define USB_MAX_DEVICE              32 +#define USB_MAXCONFIG		            8 +#define USB_MAXINTERFACES	          8 +#define USB_MAXENDPOINTS	          16 +#define USB_MAXCHILDREN  						8 	/* This is arbitrary */ +#define USB_MAX_HUB									16 + +#define USB_CNTL_TIMEOUT 100 /* 100ms timeout */ + + +/* String descriptor */ +struct usb_string_descriptor { +	unsigned char  bLength; +	unsigned char  bDescriptorType; +	unsigned short wData[1]; +} __attribute__ ((packed)); + +/* device request (setup) */ +struct devrequest { +	unsigned char requesttype; +	unsigned char request; +	unsigned short value; +	unsigned short index; +	unsigned short length; +} __attribute__ ((packed)); + + + +/* All standard descriptors have these 2 fields in common */ +struct usb_descriptor_header { +	unsigned char  bLength; +	unsigned char  bDescriptorType; +} __attribute__ ((packed)); + +/* Device descriptor */ +struct usb_device_descriptor { +	unsigned char  bLength; +	unsigned char  bDescriptorType; +	unsigned short bcdUSB; +	unsigned char  bDeviceClass; +	unsigned char  bDeviceSubClass; +	unsigned char  bDeviceProtocol; +	unsigned char  bMaxPacketSize0; +	unsigned short idVendor; +	unsigned short idProduct; +	unsigned short bcdDevice; +	unsigned char  iManufacturer; +	unsigned char  iProduct; +	unsigned char  iSerialNumber; +	unsigned char  bNumConfigurations; +} __attribute__ ((packed)); + + +/* Endpoint descriptor */ +struct usb_endpoint_descriptor { +	unsigned char  bLength; +	unsigned char  bDescriptorType; +	unsigned char  bEndpointAddress; +	unsigned char  bmAttributes; +	unsigned short wMaxPacketSize; +	unsigned char  bInterval; +	unsigned char  bRefresh; +	unsigned char  bSynchAddress; + +} __attribute__ ((packed)); +/* Interface descriptor */ +struct usb_interface_descriptor { +	unsigned char  bLength; +	unsigned char  bDescriptorType; +	unsigned char  bInterfaceNumber; +	unsigned char  bAlternateSetting; +	unsigned char  bNumEndpoints; +	unsigned char  bInterfaceClass; +	unsigned char  bInterfaceSubClass; +	unsigned char  bInterfaceProtocol; +	unsigned char  iInterface; + +	unsigned char  no_of_ep; +	unsigned char  act_altsetting; +	struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS]; +} __attribute__ ((packed)); + + +/* Configuration descriptor information.. */ +struct usb_config_descriptor { +	unsigned char  bLength; +	unsigned char  bDescriptorType; +	unsigned short wTotalLength; +	unsigned char  bNumInterfaces; +	unsigned char  bConfigurationValue; +	unsigned char  iConfiguration; +	unsigned char  bmAttributes; +	unsigned char  MaxPower; + +	unsigned char  no_of_if;			/* number of interfaces */ +	struct usb_interface_descriptor if_desc[USB_MAXINTERFACES]; +} __attribute__ ((packed)); + + +struct usb_device { +	int devnum;								/* Device number on USB bus */ +	int slow;									/* Slow device? */ +	char mf[32];		     			/* manufacturer */ +	char prod[32];		     		/* product */ +	char serial[32];       	  /* serial number */ + +	int maxpacketsize;		    /* Maximum packet size; encoded as 0,1,2,3 = 8,16,32,64 */ +	unsigned int toggle[2];		/* one bit for each endpoint ([0] = IN, [1] = OUT) */ +	unsigned int halted[2];		/* endpoint halts; one bit per endpoint # & direction; */ +                            /* [0] = IN, [1] = OUT */ +	int epmaxpacketin[16];		/* INput endpoint specific maximums */ +	int epmaxpacketout[16];		/* OUTput endpoint specific maximums */ + +	int configno;			/* selected config number */ +	struct usb_device_descriptor descriptor; /* Device Descriptor */ +	struct usb_config_descriptor config; /* config descriptor */ + +	int have_langid;		/* whether string_langid is valid yet */ +	int string_langid;		/* language ID for strings */ +	int (*irq_handle)(struct usb_device *dev); +	unsigned long irq_status; +	int irq_act_len;			/* transfered bytes */ +	void *privptr; +	/* +	 * Child devices -  if this is a hub device +	 * Each instance needs its own set of data structures. +	 */ +	unsigned long status; +	int act_len;			/* transfered bytes */ +	int maxchild;			/* Number of ports if hub */ +	struct usb_device *parent; +	struct usb_device *children[USB_MAXCHILDREN]; +}; + +/********************************************************************** + * this is how the lowlevel part communicate with the outer world + */ + +#ifdef CONFIG_USB_UHCI +int usb_lowlevel_init(void); +int usb_lowlevel_stop(void); +int submit_bulk_msg(struct usb_device *dev, unsigned long pipe, void *buffer,int transfer_len); +int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, +			int transfer_len,struct devrequest *setup); +int submit_int_msg(struct usb_device *dev, unsigned long pipe, void *buffer, +			int transfer_len, int interval); + +/* Defines */ +#define USB_UHCI_VEND_ID 0x8086 +#define USB_UHCI_DEV_ID  0x7112 + +#else +#error USB Lowlevel not defined +#endif + +#ifdef CONFIG_USB_STORAGE + +#define USB_MAX_STOR_DEV 5 +block_dev_desc_t *usb_stor_get_dev(int index); +int usb_stor_scan(int mode); + +#endif + +#ifdef CONFIG_USB_KEYBOARD + +int drv_usb_kbd_init(void); +int usb_kbd_deregister(void); + +#endif +/* routines */ +int usb_init(void); /* initialize the USB Controller */ +int usb_stop(void); /* stop the USB Controller */ + + +int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol); +int usb_set_idle(struct usb_device *dev, int ifnum, int duration, int report_id); +struct usb_device * usb_get_dev_index(int index); +int usb_control_msg(struct usb_device *dev, unsigned int pipe, +			unsigned char request, unsigned char requesttype, +			unsigned short value, unsigned short index, +			void *data, unsigned short size, int timeout); +int usb_bulk_msg(struct usb_device *dev, unsigned int pipe, +			void *data, int len, int *actual_length, int timeout); +int usb_submit_int_msg(struct usb_device *dev, unsigned long pipe, +			void *buffer,int transfer_len, int interval); +void usb_disable_asynch(int disable); +int usb_maxpacket(struct usb_device *dev,unsigned long pipe); +void __inline__ wait_ms(unsigned long ms); +int usb_get_configuration_no(struct usb_device *dev,unsigned char *buffer,int cfgno); +int usb_get_report(struct usb_device *dev, int ifnum, unsigned char type, unsigned char id, void *buf, int size); +int usb_get_class_descriptor(struct usb_device *dev, int ifnum, +		unsigned char type, unsigned char id, void *buf, int size); +int usb_clear_halt(struct usb_device *dev, int pipe); +int usb_string(struct usb_device *dev, int index, char *buf, size_t size); +int usb_set_interface(struct usb_device *dev, int interface, int alternate); + +/* big endian -> little endian conversion */ +#define swap_16(x) \ +	((unsigned short)( \ +		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \ +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) )) +#define swap_32(x) \ +	((unsigned long)( \ +		(((unsigned long)(x) & (unsigned long)0x000000ffUL) << 24) | \ +		(((unsigned long)(x) & (unsigned long)0x0000ff00UL) <<  8) | \ +		(((unsigned long)(x) & (unsigned long)0x00ff0000UL) >>  8) | \ +		(((unsigned long)(x) & (unsigned long)0xff000000UL) >> 24) )) + +/* + * Calling this entity a "pipe" is glorifying it. A USB pipe + * is something embarrassingly simple: it basically consists + * of the following information: + *  - device number (7 bits) + *  - endpoint number (4 bits) + *  - current Data0/1 state (1 bit) + *  - direction (1 bit) + *  - speed (1 bit) + *  - max packet size (2 bits: 8, 16, 32 or 64) + *  - pipe type (2 bits: control, interrupt, bulk, isochronous) + * + * That's 18 bits. Really. Nothing more. And the USB people have + * documented these eighteen bits as some kind of glorious + * virtual data structure. + * + * Let's not fall in that trap. We'll just encode it as a simple + * unsigned int. The encoding is: + * + *  - max size:		bits 0-1	(00 = 8, 01 = 16, 10 = 32, 11 = 64) + *  - direction:	bit 7		(0 = Host-to-Device [Out], 1 = Device-to-Host [In]) + *  - device:		bits 8-14 + *  - endpoint:		bits 15-18 + *  - Data0/1:		bit 19 + *  - speed:		bit 26		(0 = Full, 1 = Low Speed) + *  - pipe type:	bits 30-31	(00 = isochronous, 01 = interrupt, 10 = control, 11 = bulk) + * + * Why? Because it's arbitrary, and whatever encoding we select is really + * up to us. This one happens to share a lot of bit positions with the UHCI + * specification, so that much of the uhci driver can just mask the bits + * appropriately. + */ +/* Create various pipes... */ +#define create_pipe(dev,endpoint) \ +		(((dev)->devnum << 8) | (endpoint << 15) | ((dev)->slow << 26) | (dev)->maxpacketsize) +#define default_pipe(dev) ((dev)->slow <<26) + +#define usb_sndctrlpipe(dev,endpoint)	((PIPE_CONTROL << 30) | create_pipe(dev,endpoint)) +#define usb_rcvctrlpipe(dev,endpoint)	((PIPE_CONTROL << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) +#define usb_sndisocpipe(dev,endpoint)	((PIPE_ISOCHRONOUS << 30) | create_pipe(dev,endpoint)) +#define usb_rcvisocpipe(dev,endpoint)	((PIPE_ISOCHRONOUS << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) +#define usb_sndbulkpipe(dev,endpoint)	((PIPE_BULK << 30) | create_pipe(dev,endpoint)) +#define usb_rcvbulkpipe(dev,endpoint)	((PIPE_BULK << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) +#define usb_sndintpipe(dev,endpoint)	((PIPE_INTERRUPT << 30) | create_pipe(dev,endpoint)) +#define usb_rcvintpipe(dev,endpoint)	((PIPE_INTERRUPT << 30) | create_pipe(dev,endpoint) | USB_DIR_IN) +#define usb_snddefctrl(dev)		((PIPE_CONTROL << 30) | default_pipe(dev)) +#define usb_rcvdefctrl(dev)		((PIPE_CONTROL << 30) | default_pipe(dev) | USB_DIR_IN) + +/* The D0/D1 toggle bits */ +#define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> ep) & 1) +#define	usb_dotoggle(dev, ep, out)  ((dev)->toggle[out] ^= (1 << ep)) +#define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << ep)) | ((bit) << ep)) + +/* Endpoint halt control/status */ +#define usb_endpoint_out(ep_dir)	(((ep_dir >> 7) & 1) ^ 1) +#define usb_endpoint_halt(dev, ep, out) ((dev)->halted[out] |= (1 << (ep))) +#define usb_endpoint_running(dev, ep, out) ((dev)->halted[out] &= ~(1 << (ep))) +#define usb_endpoint_halted(dev, ep, out) ((dev)->halted[out] & (1 << (ep))) + +#define usb_packetid(pipe)	(((pipe) & USB_DIR_IN) ? USB_PID_IN : USB_PID_OUT) + +#define usb_pipeout(pipe)	((((pipe) >> 7) & 1) ^ 1) +#define usb_pipein(pipe)	(((pipe) >> 7) & 1) +#define usb_pipedevice(pipe)	(((pipe) >> 8) & 0x7f) +#define usb_pipe_endpdev(pipe)	(((pipe) >> 8) & 0x7ff) +#define usb_pipeendpoint(pipe)	(((pipe) >> 15) & 0xf) +#define usb_pipedata(pipe)	(((pipe) >> 19) & 1) +#define usb_pipeslow(pipe)	(((pipe) >> 26) & 1) +#define usb_pipetype(pipe)	(((pipe) >> 30) & 3) +#define usb_pipeisoc(pipe)	(usb_pipetype((pipe)) == PIPE_ISOCHRONOUS) +#define usb_pipeint(pipe)	(usb_pipetype((pipe)) == PIPE_INTERRUPT) +#define usb_pipecontrol(pipe)	(usb_pipetype((pipe)) == PIPE_CONTROL) +#define usb_pipebulk(pipe)	(usb_pipetype((pipe)) == PIPE_BULK) + + +/************************************************************************* + * Hub Stuff + */ +struct usb_port_status { +	unsigned short wPortStatus; +	unsigned short wPortChange; +} __attribute__ ((packed)); + +struct usb_hub_status { +	unsigned short wHubStatus; +	unsigned short wHubChange; +} __attribute__ ((packed)); + + +/* Hub descriptor */ +struct usb_hub_descriptor { +	unsigned char  bLength; +	unsigned char  bDescriptorType; +	unsigned char  bNbrPorts; +	unsigned short wHubCharacteristics; +	unsigned char  bPwrOn2PwrGood; +	unsigned char  bHubContrCurrent; +	unsigned char  DeviceRemovable[(USB_MAXCHILDREN+1+7)/8]; +	unsigned char  PortPowerCtrlMask[(USB_MAXCHILDREN+1+7)/8]; +		/* DeviceRemovable and PortPwrCtrlMask want to be variable-length +	   bitmaps that hold max 255 entries. (bit0 is ignored) */ +} __attribute__ ((packed)); + + +struct usb_hub_device { +	struct usb_device *pusb_dev; +	struct usb_hub_descriptor desc; +}; + +#endif /*_USB_H_ */ diff --git a/include/usb_defs.h b/include/usb_defs.h new file mode 100644 index 000000000..00a31e905 --- /dev/null +++ b/include/usb_defs.h @@ -0,0 +1,256 @@ +/* + * (C) Copyright 2001 + * Denis Peter, MPL AG Switzerland + * + * 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 + * + * Note: Part of this code has been derived from linux + * + */ +#ifndef _USB_DEFS_H_ +#define _USB_DEFS_H_ + + +/* Everything is aribtrary */ +#define USB_ALTSETTINGALLOC          4 +#define USB_MAXALTSETTING	           128  /* Hard limit */ + +#define USB_MAX_DEVICE              32 +#define USB_MAXCONFIG		            8 +#define USB_MAXINTERFACES	          8 +#define USB_MAXENDPOINTS	          16 +#define USB_MAXCHILDREN  						8 	/* This is arbitrary */ +#define USB_MAX_HUB									16 + +#define USB_CNTL_TIMEOUT 100 /* 100ms timeout */ + +/* USB constants */ + +/* Device and/or Interface Class codes */ +#define USB_CLASS_PER_INTERFACE  0	/* for DeviceClass */ +#define USB_CLASS_AUDIO          1 +#define USB_CLASS_COMM           2 +#define USB_CLASS_HID            3 +#define USB_CLASS_PRINTER	       7 +#define USB_CLASS_MASS_STORAGE   8 +#define USB_CLASS_HUB            9 +#define USB_CLASS_DATA           10 +#define USB_CLASS_VENDOR_SPEC    0xff + +/* some HID sub classes */ +#define USB_SUB_HID_NONE        0 +#define USB_SUB_HID_BOOT        1 + +/* some UID Protocols */ +#define USB_PROT_HID_NONE       0 +#define USB_PROT_HID_KEYBOARD   1 +#define USB_PROT_HID_MOUSE      2 + + +/* Sub STORAGE Classes */ +#define US_SC_RBC              1		/* Typically, flash devices */ +#define US_SC_8020             2		/* CD-ROM */ +#define US_SC_QIC              3		/* QIC-157 Tapes */ +#define US_SC_UFI              4		/* Floppy */ +#define US_SC_8070             5		/* Removable media */ +#define US_SC_SCSI             6		/* Transparent */ +#define US_SC_MIN              US_SC_RBC +#define US_SC_MAX              US_SC_SCSI + +/* STORAGE Protocols */ +#define US_PR_CB               1		/* Control/Bulk w/o interrupt */ +#define US_PR_CBI              0		/* Control/Bulk/Interrupt */ +#define US_PR_BULK             0x50		/* bulk only */ + +/* USB types */ +#define USB_TYPE_STANDARD   (0x00 << 5) +#define USB_TYPE_CLASS      (0x01 << 5) +#define USB_TYPE_VENDOR     (0x02 << 5) +#define USB_TYPE_RESERVED   (0x03 << 5) + +/* USB recipients */ +#define USB_RECIP_DEVICE      0x00 +#define USB_RECIP_INTERFACE   0x01 +#define USB_RECIP_ENDPOINT    0x02 +#define USB_RECIP_OTHER       0x03 + +/* USB directions */ +#define USB_DIR_OUT           0 +#define USB_DIR_IN            0x80 + +/* Descriptor types */ +#define USB_DT_DEVICE        0x01 +#define USB_DT_CONFIG        0x02 +#define USB_DT_STRING        0x03 +#define USB_DT_INTERFACE     0x04 +#define USB_DT_ENDPOINT      0x05 + +#define USB_DT_HID          (USB_TYPE_CLASS | 0x01) +#define USB_DT_REPORT       (USB_TYPE_CLASS | 0x02) +#define USB_DT_PHYSICAL     (USB_TYPE_CLASS | 0x03) +#define USB_DT_HUB          (USB_TYPE_CLASS | 0x09) + +/* Descriptor sizes per descriptor type */ +#define USB_DT_DEVICE_SIZE      18 +#define USB_DT_CONFIG_SIZE      9 +#define USB_DT_INTERFACE_SIZE   9 +#define USB_DT_ENDPOINT_SIZE    7 +#define USB_DT_ENDPOINT_AUDIO_SIZE  9	/* Audio extension */ +#define USB_DT_HUB_NONVAR_SIZE  7 +#define USB_DT_HID_SIZE         9 + +/* Endpoints */ +#define USB_ENDPOINT_NUMBER_MASK  0x0f	/* in bEndpointAddress */ +#define USB_ENDPOINT_DIR_MASK     0x80 + +#define USB_ENDPOINT_XFERTYPE_MASK 0x03	/* in bmAttributes */ +#define USB_ENDPOINT_XFER_CONTROL  0 +#define USB_ENDPOINT_XFER_ISOC     1 +#define USB_ENDPOINT_XFER_BULK     2 +#define USB_ENDPOINT_XFER_INT      3 + +/* USB Packet IDs (PIDs) */ +#define USB_PID_UNDEF_0             0xf0 +#define USB_PID_OUT                 0xe1 +#define USB_PID_ACK                 0xd2 +#define USB_PID_DATA0               0xc3 +#define USB_PID_UNDEF_4             0xb4 +#define USB_PID_SOF                 0xa5 +#define USB_PID_UNDEF_6             0x96 +#define USB_PID_UNDEF_7             0x87 +#define USB_PID_UNDEF_8             0x78 +#define USB_PID_IN                  0x69 +#define USB_PID_NAK                 0x5a +#define USB_PID_DATA1               0x4b +#define USB_PID_PREAMBLE            0x3c +#define USB_PID_SETUP               0x2d +#define USB_PID_STALL               0x1e +#define USB_PID_UNDEF_F             0x0f + +/* Standard requests */ +#define USB_REQ_GET_STATUS          0x00 +#define USB_REQ_CLEAR_FEATURE       0x01 +#define USB_REQ_SET_FEATURE         0x03 +#define USB_REQ_SET_ADDRESS         0x05 +#define USB_REQ_GET_DESCRIPTOR      0x06 +#define USB_REQ_SET_DESCRIPTOR      0x07 +#define USB_REQ_GET_CONFIGURATION   0x08 +#define USB_REQ_SET_CONFIGURATION   0x09 +#define USB_REQ_GET_INTERFACE       0x0A +#define USB_REQ_SET_INTERFACE       0x0B +#define USB_REQ_SYNCH_FRAME         0x0C + +/* HID requests */ +#define USB_REQ_GET_REPORT          0x01 +#define USB_REQ_GET_IDLE            0x02 +#define USB_REQ_GET_PROTOCOL        0x03 +#define USB_REQ_SET_REPORT          0x09 +#define USB_REQ_SET_IDLE            0x0A +#define USB_REQ_SET_PROTOCOL        0x0B + + +/* "pipe" definitions */ + +#define PIPE_ISOCHRONOUS    0 +#define PIPE_INTERRUPT      1 +#define PIPE_CONTROL        2 +#define PIPE_BULK           3 +#define PIPE_DEVEP_MASK     0x0007ff00 + +#define USB_ISOCHRONOUS    0 +#define USB_INTERRUPT      1 +#define USB_CONTROL        2 +#define USB_BULK           3 + +/* USB-status codes: */ +#define USB_ST_ACTIVE           0x1		/* TD is active */ +#define USB_ST_STALLED          0x2		/* TD is stalled */ +#define USB_ST_BUF_ERR          0x4		/* buffer error */ +#define USB_ST_BABBLE_DET       0x8		/* Babble detected */ +#define USB_ST_NAK_REC          0x10	/* NAK Received*/ +#define USB_ST_CRC_ERR          0x20	/* CRC/timeout Error */ +#define USB_ST_BIT_ERR          0x40	/* Bitstuff error */ +#define USB_ST_NOT_PROC         0x80000000L	/* Not yet processed */ + + + +/************************************************************************* + * Hub defines + */ + +/* + * Hub request types + */ + +#define USB_RT_HUB	(USB_TYPE_CLASS | USB_RECIP_DEVICE) +#define USB_RT_PORT	(USB_TYPE_CLASS | USB_RECIP_OTHER) + +/* + * Hub Class feature numbers + */ +#define C_HUB_LOCAL_POWER   0 +#define C_HUB_OVER_CURRENT  1 + +/* + * Port feature numbers + */ +#define USB_PORT_FEAT_CONNECTION     0 +#define USB_PORT_FEAT_ENABLE         1 +#define USB_PORT_FEAT_SUSPEND        2 +#define USB_PORT_FEAT_OVER_CURRENT   3 +#define USB_PORT_FEAT_RESET          4 +#define USB_PORT_FEAT_POWER          8 +#define USB_PORT_FEAT_LOWSPEED       9 +#define USB_PORT_FEAT_C_CONNECTION   16 +#define USB_PORT_FEAT_C_ENABLE       17 +#define USB_PORT_FEAT_C_SUSPEND      18 +#define USB_PORT_FEAT_C_OVER_CURRENT 19 +#define USB_PORT_FEAT_C_RESET        20 + +/* wPortStatus bits */ +#define USB_PORT_STAT_CONNECTION    0x0001 +#define USB_PORT_STAT_ENABLE        0x0002 +#define USB_PORT_STAT_SUSPEND       0x0004 +#define USB_PORT_STAT_OVERCURRENT   0x0008 +#define USB_PORT_STAT_RESET         0x0010 +#define USB_PORT_STAT_POWER         0x0100 +#define USB_PORT_STAT_LOW_SPEED     0x0200 + +/* wPortChange bits */ +#define USB_PORT_STAT_C_CONNECTION  0x0001 +#define USB_PORT_STAT_C_ENABLE      0x0002 +#define USB_PORT_STAT_C_SUSPEND     0x0004 +#define USB_PORT_STAT_C_OVERCURRENT 0x0008 +#define USB_PORT_STAT_C_RESET       0x0010 + +/* wHubCharacteristics (masks) */ +#define HUB_CHAR_LPSM               0x0003 +#define HUB_CHAR_COMPOUND           0x0004 +#define HUB_CHAR_OCPM               0x0018 + +/* + *Hub Status & Hub Change bit masks + */ +#define HUB_STATUS_LOCAL_POWER	0x0001 +#define HUB_STATUS_OVERCURRENT	0x0002 + +#define HUB_CHANGE_LOCAL_POWER	0x0001 +#define HUB_CHANGE_OVERCURRENT	0x0002 + +#endif /*_USB_DEFS_H_ */ diff --git a/include/w83c553f.h b/include/w83c553f.h new file mode 100644 index 000000000..88ea9da6a --- /dev/null +++ b/include/w83c553f.h @@ -0,0 +1,178 @@ +/* + * (C) Copyright 2000 + * Rob Taylor, Flying Pig Systems. robt@flyingpig.com. + * + * 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 + */ + + /* winbond access routines and defines*/ + +/* from the winbond data sheet - + The W83C553F SIO controller with PCI arbiter is a multi-function PCI device. + Function 0 is the ISA bridge, and Function 1 is the bus master IDE controller. +*/ + +/*ISA bridge configuration space*/ + +#define W83C553F_VID		0x10AD +#define W83C553F_DID		0x0565 + +#define WINBOND_PCICONTR	0x40  /*pci control reg*/ +#define WINBOND_SGBAR		0x41  /*scatter/gather base address reg*/ +#define WINBOND_LBCR		0x42  /*Line Buffer Control reg*/ +#define WINBOND_IDEIRCR		0x43  /*IDE Interrupt Routing Control  Reg*/ +#define WINBOND_PCIIRCR		0x44  /*PCI Interrupt Routing Control Reg*/ +#define WINBOND_BTBAR		0x46  /*BIOS Timer Base Address Register*/ +#define WINBOND_IPADCR		0x48  /*ISA to PCI Address Decoder Control Register*/ +#define WINBOND_IRADCR		0x49  /*ISA ROM Address Decoder Control Register*/ +#define WINBOND_IPMHSAR		0x4a  /*ISA to PCI Memory Hole STart Address Register*/ +#define WINBOND_IPMHSR		0x4b  /*ISA to PCI Memory Hols Size Register*/ +#define WINBOND_CDR			0x4c  /*Clock Divisor Register*/ +#define WINBOND_CSCR		0x4d  /*Chip Select Control Register*/ +#define WINBOND_ATSCR		0x4e  /*AT System Control register*/ +#define WINBOND_ATBCR		0x4f  /*AT Bus ControL Register*/ +#define WINBOND_IRQBEE0R	0x60  /*IRQ Break Event Enable 0 Register*/ +#define WINBOND_IRQBEE1R	0x61  /*IRQ Break Event Enable 1 Register*/ +#define WINBOND_ABEER		0x62  /*Additional Break Event Enable Register*/ +#define WINBOND_DMABEER		0x63  /*DMA Break Event Enable Register*/ + +#define WINDOND_IDECSR		0x40  /*IDE Control/Status Register, Function 1*/ + +#define IPADCR_MBE512		0x1 +#define IPADCR_MBE640		0x2 +#define IPADCR_IPATOM4		0x10 +#define IPADCR_IPATOM5		0x20 +#define IPADCR_IPATOM6		0x40 +#define IPADCR_IPATOM7		0x80 + +#define CSCR_UBIOSCSE		0x10 +#define CSCR_BIOSWP			0x20 + +#define IDECSR_P0EN			0x01 +#define IDECSR_P0F16		0x02 +#define IDECSR_P1EN			0x10 +#define IDECSR_P1F16		0x20 +#define IDECSR_LEGIRQ		0x800 + +/* + * Interrupt controller + */ +#define W83C553F_PIC1_ICW1	CFG_ISA_IO + 0x20 +#define W83C553F_PIC1_ICW2	CFG_ISA_IO + 0x21 +#define W83C553F_PIC1_ICW3	CFG_ISA_IO + 0x21 +#define W83C553F_PIC1_ICW4	CFG_ISA_IO + 0x21 +#define W83C553F_PIC1_OCW1	CFG_ISA_IO + 0x21 +#define W83C553F_PIC1_OCW2	CFG_ISA_IO + 0x20 +#define W83C553F_PIC1_OCW3	CFG_ISA_IO + 0x20 +#define W83C553F_PIC1_ELC	CFG_ISA_IO + 0x4D0 +#define W83C553F_PIC2_ICW1	CFG_ISA_IO + 0xA0 +#define W83C553F_PIC2_ICW2	CFG_ISA_IO + 0xA1 +#define W83C553F_PIC2_ICW3	CFG_ISA_IO + 0xA1 +#define W83C553F_PIC2_ICW4	CFG_ISA_IO + 0xA1 +#define W83C553F_PIC2_OCW1	CFG_ISA_IO + 0xA1 +#define W83C553F_PIC2_OCW2	CFG_ISA_IO + 0xA0 +#define W83C553F_PIC2_OCW3	CFG_ISA_IO + 0xA0 +#define W83C553F_PIC2_ELC	CFG_ISA_IO + 0x4D1 + +#define W83C553F_TMR1_CMOD	CFG_ISA_IO + 0x43 + +/* + * DMA controller + */ +#define W83C553F_DMA1	CFG_ISA_IO + 0x000	/* channel 0 - 3 */ +#define W83C553F_DMA2	CFG_ISA_IO + 0x0C0	/* channel 4 - 7 */ + +/* command/status register bit definitions */ + +#define W83C553F_CS_COM_DACKAL	(1<<7)	/* DACK# assert level */ +#define W83C553F_CS_COM_DREQSAL	(1<<6)	/* DREQ sense assert level */ +#define W83C553F_CS_COM_GAP	(1<<4)	/* group arbitration priority */ +#define W83C553F_CS_COM_CGE	(1<<2)	/* channel group enable */ + +#define W83C553F_CS_STAT_CH0REQ	(1<<4)	/* channel 0 (4) DREQ status */ +#define W83C553F_CS_STAT_CH1REQ	(1<<5)	/* channel 1 (5) DREQ status */ +#define W83C553F_CS_STAT_CH2REQ	(1<<6)	/* channel 2 (6) DREQ status */ +#define W83C553F_CS_STAT_CH3REQ	(1<<7)	/* channel 3 (7) DREQ status */ + +#define W83C553F_CS_STAT_CH0TC	(1<<0)	/* channel 0 (4) TC status */ +#define W83C553F_CS_STAT_CH1TC	(1<<1)	/* channel 1 (5) TC status */ +#define W83C553F_CS_STAT_CH2TC	(1<<2)	/* channel 2 (6) TC status */ +#define W83C553F_CS_STAT_CH3TC	(1<<3)	/* channel 3 (7) TC status */ + +/* mode register bit definitions */ + +#define W83C553F_MODE_TM_DEMAND	(0<<6)	/* transfer mode - demand */ +#define W83C553F_MODE_TM_SINGLE	(1<<6)	/* transfer mode - single */ +#define W83C553F_MODE_TM_BLOCK	(2<<6)	/* transfer mode - block */ +#define W83C553F_MODE_TM_CASCADE	(3<<6)	/* transfer mode - cascade */ +#define W83C553F_MODE_ADDRDEC	(1<<5)	/* address increment/decrement select */ +#define W83C553F_MODE_AUTOINIT	(1<<4)	/* autoinitialize enable */ +#define W83C553F_MODE_TT_VERIFY	(0<<2)	/* transfer type - verify */ +#define W83C553F_MODE_TT_WRITE	(1<<2)	/* transfer type - write */ +#define W83C553F_MODE_TT_READ	(2<<2)	/* transfer type - read */ +#define W83C553F_MODE_TT_ILLEGAL	(3<<2)	/* transfer type - illegal */ +#define W83C553F_MODE_CH0SEL	(0<<0)	/* channel 0 (4) select */ +#define W83C553F_MODE_CH1SEL	(1<<0)	/* channel 1 (5) select */ +#define W83C553F_MODE_CH2SEL	(2<<0)	/* channel 2 (6) select */ +#define W83C553F_MODE_CH3SEL	(3<<0)	/* channel 3 (7) select */ + +/* request register bit definitions */ + +#define W83C553F_REQ_CHSERREQ	(1<<2)	/* channel service request */ +#define W83C553F_REQ_CH0SEL	(0<<0)	/* channel 0 (4) select */ +#define W83C553F_REQ_CH1SEL	(1<<0)	/* channel 1 (5) select */ +#define W83C553F_REQ_CH2SEL	(2<<0)	/* channel 2 (6) select */ +#define W83C553F_REQ_CH3SEL	(3<<0)	/* channel 3 (7) select */ + +/* write single mask bit register bit definitions */ + +#define W83C553F_WSMB_CHMASKSEL	(1<<2)	/* channel mask select */ +#define W83C553F_WSMB_CH0SEL	(0<<0)	/* channel 0 (4) select */ +#define W83C553F_WSMB_CH1SEL	(1<<0)	/* channel 1 (5) select */ +#define W83C553F_WSMB_CH2SEL	(2<<0)	/* channel 2 (6) select */ +#define W83C553F_WSMB_CH3SEL	(3<<0)	/* channel 3 (7) select */ + +/* read/write all mask bits register bit definitions */ + +#define W83C553F_RWAMB_CH0MASK	(1<<0)	/* channel 0 (4) mask */ +#define W83C553F_RWAMB_CH1MASK	(1<<1)	/* channel 1 (5) mask */ +#define W83C553F_RWAMB_CH2MASK	(1<<2)	/* channel 2 (6) mask */ +#define W83C553F_RWAMB_CH3MASK	(1<<3)	/* channel 3 (7) mask */ + +/* typedefs */ + +#define W83C553F_DMA1_CS		0x8 +#define W83C553F_DMA1_WR		0x9 +#define W83C553F_DMA1_WSMB		0xA +#define W83C553F_DMA1_WM		0xB +#define W83C553F_DMA1_CBP		0xC +#define W83C553F_DMA1_MC		0xD +#define W83C553F_DMA1_CM		0xE +#define W83C553F_DMA1_RWAMB		0xF + +#define W83C553F_DMA2_CS		0x10 +#define W83C553F_DMA2_WR		0x12 +#define W83C553F_DMA2_WSMB		0x14 +#define W83C553F_DMA2_WM		0x16 +#define W83C553F_DMA2_CBP		0x18 +#define W83C553F_DMA2_MC		0x1A +#define W83C553F_DMA2_CM		0x1C +#define W83C553F_DMA2_RWAMB		0x1E + +void initialise_w83c553f(void); diff --git a/include/watchdog.h b/include/watchdog.h new file mode 100644 index 000000000..6a64409e5 --- /dev/null +++ b/include/watchdog.h @@ -0,0 +1,96 @@ +/* + * (C) Copyright 2001 + * Erik Theisen,  Wave 7 Optics, etheisen@mindspring.com. + * + * 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 + */ + +/* + * Watchdog functions and macros. + */ +#ifndef _WATCHDOG_H_ +#define _WATCHDOG_H_ + +#if defined(CONFIG_HW_WATCHDOG) && defined(CONFIG_WATCHDOG) +#  error "Configuration error: CONFIG_HW_WATCHDOG and CONFIG_WATCHDOG can't be used together." +#endif + +/* + * Hardware watchdog + */ +#ifdef CONFIG_HW_WATCHDOG +	#if defined(__ASSEMBLY__) +		#define WATCHDOG_RESET bl hw_watchdog_reset +	#else +		extern void hw_watchdog_reset(void); + +		#define WATCHDOG_RESET hw_watchdog_reset +	#endif /* __ASSEMBLY__ */ +#else +	/* +	 * Maybe a software watchdog? +	 */ +	#if defined(CONFIG_WATCHDOG) +		#if defined(__ASSEMBLY__) +			#define WATCHDOG_RESET bl watchdog_reset +		#else +			extern void watchdog_reset(void); + +			#define WATCHDOG_RESET watchdog_reset +		#endif +	#else +		/* +		 * No hardware or software watchdog. +		 */ +		#if defined(__ASSEMBLY__) +			#define WATCHDOG_RESET /*XXX DO_NOT_DEL_THIS_COMMENT*/ +		#else +			#define WATCHDOG_RESET() {} +		#endif /* __ASSEMBLY__ */ +	#endif /* CONFIG_WATCHDOG && !__ASSEMBLY__ */ +#endif /* CONFIG_HW_WATCHDOG */ + +/* + * Prototypes from $(CPU)/cpu.c. + */ + +/* MPC 8xx */ +#if (defined(CONFIG_8xx) || defined(CONFIG_MPC860)) && !defined(__ASSEMBLY__) +	void reset_8xx_watchdog(volatile immap_t *immr); +#endif + +/* IBM 4xx */ +#if defined(CONFIG_4xx) && !defined(__ASSEMBLY__) +	void reset_4xx_watchdog(void); +#endif + +/* MPC 8260 */ +#if defined(CONFIG_MPC8260) && !defined(__ASSEMBLY__) +#if defined(CONFIG_WATCHDOG) +extern __inline__ void +reset_8260_watchdog(volatile immap_t *immr) +{ +	immr->im_siu_conf.sc_swsr = 0x556c; +	immr->im_siu_conf.sc_swsr = 0xaa39; +} +#endif /* !__ASSEMBLY__ && CONFIG_WATCHDOG */ +#endif /* CONFIG_MPC8260 && !__ASSEMBLY__ */ + +#endif /* _WATCHDOG_H_ */ + diff --git a/tools/bddb/bddb.css b/tools/bddb/bddb.css new file mode 100644 index 000000000..dee2b2ee4 --- /dev/null +++ b/tools/bddb/bddb.css @@ -0,0 +1,207 @@ +BODY { +	background:	#e0ffff; +	color:		#000000; +	font-family:	Arial, Verdana,	Helvetica; +} +H1 { +	font-family:	"Copperplate Gothic Bold"; +	background:	transparent; +	color:		#993300; +	text-align:	center; +} +H2, H3, H4, H5 { +	background:	transparent; +	color:		#993300; +	margin-top:	4%; +	text-align:	center; +} +Body.Plain Div.Abstract, Body.Plain P.Abstract { +	background:	#cccc99; +	color:		#333300; +	border:		white; +	padding:	3%; +	font-family:	Times, Verdana; +} +TH.Nav { +	background:	#0000cc; +	color:		#ff9900; +} +TH.Menu	{ +	background:	#3366cc; +	color:		#ff9900; +} +A:hover	{ +	color:		#ff6600; +} +A.Menu:hover { +	color:		#ff6600; +} +A.HoMe:hover { +	color:		#ff6600; +} +A.Menu { +	background:	transparent; +	color:		#ffcc33; +	font-family:	Verdana, Helvetica, Arial; +	font-size:	smaller; +	text-decoration:	none; +} +A.Menu:visited { +	background:	transparent; +	color:		#ffcc99; +} +A.HoMe { +	background:	transparent; +	color:		#ffcc33; +	font-family:	Verdana, Helvetica, Arial; +	text-decoration:none; +} +A.HoMe:visited { +	background:	transparent; +	color:		#ffcc99; +} +TH.Xmp { +	background:	#eeeeee; +	color:		#330066; +	font-family:	courier; +	font-weight:	normal; +} +TH.LuT { +	background:	#cccccc; +	color:	#000000; +} +TD.LuT { +	background:	#ffffcc; +	color:		#000000; +	font-size:	85%; +} +TH.Info, TD.Info { +	background:	#ffffcc; +	color:		#660000; +	font-family:	"Comic Sans MS", Cursive, Verdana; +	font-size:	smaller; +} +Div.Info, P.Info { +	background:	#ffff99; +	color:		#990033; +	text-align:	left; +	padding:	2%; +	font-family:	"Comic Sans MS", Cursive, Verdana; +	font-size:	85%; +	} +Div.Info A { +	background:	transparent; +	color:		#ff6600; +} +.HL { +	background:	#ffff99; +	color:		#000000; +} +TD.HL { +	background:	#ccffff; +	color:		#000000; +} +Div.Margins { +	width:		512px; +	text-align:	center; +} +TD.Plain { +	background:	#ffffcc; +	color:		#000033; +} +.Type { +	background:	#cccccc; +	color:		#660000; +} +.Name { +	background:	#eeeeee; +	color:		#660000; +	vertical-align:	top; +	text-align:	right; +} +.Value { +	background:	#ffffee; +	color:		#000066; +} +.Drop { +	background:	#333366; +	color:		#ffcc33; +	font-family:	"Copperplate Gothic Light", Helvetica, Verdana, Arial; +} +A.Button:hover { +	color:		#ff6600; +} +A.Button { +	text-decoration:none; +	color:		#003366; +	background:	#ffcc66; +} +.Button { +	font-size:	9pt; +	text-align:	center; +	text-decoration:none; +	color:		#003366; +	background:	#ffcc66; +	margin-bottom:	2pt; +	border-top:	2px solid #ffff99; +	border-left:	2px solid #ffff99; +	border-right:	2px solid #cc9933; +	border-bottom:	2px solid #cc9933; +	font-family:	Verdana, Arial, "Comic Sans MS"; +} +.Banner	{ +	width:		468; +	font-size:	12pt; +	text-align:	center; +	text-decoration:none; +	color:		#003366; +	background:	#ffcc66; +	border-top:	4px solid #ffff99; +	border-left:	4px solid #ffff99; +	border-right:	4px solid #cc9933; +	border-bottom:	4px solid #cc9933; +	font-family:	Verdana, Arial, "Comic Sans MS"; +} +TD.Nova, Body.Nova { +	background:	#000000; +	font-family:	"Times New Roman"; +	font-weight:	light; +	color:		#ffcc00; +} +Body.Nova A.Button { +	background:	gold; +	color:		#003366; +} +Body.Nova A.Banner { +	background:	transparent; +	color:		#003366; +} +Body.Nova A { +	background:	transparent; +	text-decoration:none; +	color:		#ffd766; +} +Body.Nova H1, Body.Nova H2, Body.Nova H3, Body.Nova H4 { +	background:	transparent; +	color:		white; +	margin-top:	4%; +	text-align:	center; +	filter:		Blur(Add=1, Direction=0, Strength=8); +} +Body.Nova Div.Abstract { +	background:	#000000; +	color:		#ffffff; +	font-family:	Times, Verdana; +} +Body.Nova A.Abstract { +	background:	transparent; +	color:		#ffeedd; +} +Body.Nova TH.LuT { +	background:	black; +	color:		#ffff99; +} +Body.Nova TD.LuT { +	background:	navy; +	color:		#ffff99; +} diff --git a/tools/scripts/dot.kermrc b/tools/scripts/dot.kermrc new file mode 100644 index 000000000..0fc6c15d3 --- /dev/null +++ b/tools/scripts/dot.kermrc @@ -0,0 +1,16 @@ +set line /dev/ttyS0 +set speed 115200 +set carrier-watch off +set handshake none +set flow-control none +robust +set file type bin +set file name lit +set rec pack 1000 +set send pack 1000 +set window 5 +set prompt Kermit> +define sz !sz \%1 \%2 \%3 \%4 \%5 \%6 \%7 \%8 \%9 < \v(line) > \v(line) +define rz !rz \%1 \%2 \%3 \%4 \%5 \%6 \%7 \%8 \%9 < \v(line) > \v(line) +define sx !sx \%1 \%2 \%3 \%4 \%5 \%6 \%7 \%8 \%9 < \v(line) > \v(line) +define rx !rx \%1 \%2 \%3 \%4 \%5 \%6 \%7 \%8 \%9 < \v(line) > \v(line) diff --git a/tools/scripts/flash_param b/tools/scripts/flash_param new file mode 100644 index 000000000..847f99e1e --- /dev/null +++ b/tools/scripts/flash_param @@ -0,0 +1,60 @@ +#!/usr/bin/kermit + +# usage: ./flash_param parameters +# Parameters: IP Address       ETH Address        ERIC Number +# Format:     xxx.xxx.xxx.xxx  xx:xx:xx:xx:xx:xx  xxxx + +set line /dev/ttyS0 +set speed 115200 +set serial 8N1 +set carrier-watch off +set handshake none +#set flow-control none +set flow-control xon/xoff +#robust +set file type bin +set file name lit +set rec pack 1000 +set send pack 1000 +set window 5 +set prompt Kermit> +#robust +# Milliseconds to pause between each OUTPUT character +set output pacing 1 + +out \13 +in 10 => +#first erase the environment memory within NVRAM +out mw f0000000 0 200\13 +in 10 => +out reset\13 +in 5 autoboot +out \13\13 +in 10 => +#set additional env parameter +out setenv ethaddr \%2\13 +in 10 => +out setenv serial# ERIC 1.0 \%3\13 +in 10 => +out setenv eric_id \%3\13 +in 10 => +#out setenv prec_videocard_bus unknown\13 +#in 10 => +#out setenv prec_bios_type unknown\13 +#in 10 => +out setenv eric_passwd .eRIC.\13 +in 10 => +#out setenv bootargs root=/dev/ram ramdisk_size=8192 init=/sbin/init ip=\%1:192.168.1.100:192.168.1.254:255.255.255.0\13 +#out setenv bootargs root=/dev/ram ramdisk_size=8192 init=/sbin/init ip=\%1:192.168.0.1\13 +#out setenv bootargs root=/dev/ram ramdisk_size=8192 init=/sbin/init ip=\%1\13 +out setenv bootargs console=/dev/ttyS0,115200 root=/dev/nfs nfsroot=192.168.1.26:/eric_root_devel ip=\%1:192.168.1.26\13 +in 10 => +out setenv bootcmd bootm FFC00000\13 +in 10 => +out saveenv\13 +in 10 => +out reset\13 +in 5 autoboot +out \13\13 +in 10 => +quit +exit 0 diff --git a/tools/scripts/send_cmd b/tools/scripts/send_cmd new file mode 100644 index 000000000..d01efe22b --- /dev/null +++ b/tools/scripts/send_cmd @@ -0,0 +1,22 @@ +#!/usr/bin/kermit + +set line /dev/ttyS0 +set speed 115200 +set serial 8N1 +set carrier-watch off +set handshake none +set flow-control none +robust +set file type bin +set file name lit +set rec pack 1000 +set send pack 1000 +set window 5 +set prompt Kermit> + +#out \13 +#in 10 => +out \%1 \%2 \%3 \%4 \%5 \%6 \%7\13 +in 10 => +quit +exit 0 + diff --git a/tools/scripts/send_image b/tools/scripts/send_image new file mode 100644 index 000000000..9b89d6b05 --- /dev/null +++ b/tools/scripts/send_image @@ -0,0 +1,26 @@ +#!/usr/bin/kermit + +# usage: send_image FILE_NAME OFFSET +# e.g.   send_image output.bin 1F00000 +set line /dev/ttyS0 +set speed 115200 +set serial 8N1 +set carrier-watch off +set handshake none +set flow-control none +robust +set file type bin +set file name lit +set rec pack 1000 +set send pack 1000 +set window 5 +set prompt Kermit> + +out \13 +in 10 => +out loadb \%2 \13 +in 10 download ... +send \%1 +out \13 +in 10 ## Start Addr +quit +exit 0 |